Visão geral da decodificação
O tópico apresenta o decodificador de bitmap, um componente de codec principal do WIC (Componente de Imagem do Windows) usado para decodificar arquivos de imagem de um fluxo.
Este tópico inclui as seções a seguir.
- Introdução
- Decodificadores de Bitmap nativos
- Criando um decodificador bitmap
- Extensibilidade do decodificador
- Tópicos relacionados
Introdução
Os decodificadores de bitmap podem ser exibidos como o contêiner externo de uma imagem digital e fornecem acesso a propriedades globais e quadros de imagem. Alguns formatos de imagem dão suporte a miniaturas globais, visualizações, contextos de cores ou metadados, enquanto outros fornecem essas propriedades apenas no nível do quadro. No entanto, observe que muitos dos formatos de imagem padrão não dão suporte a essas propriedades globais. Dessa forma, muitas das implementações de codec nativo fornecidas pelo WIC não dão suporte à maioria dessas propriedades globais. Consulte a tabela na seção Decodificadores de Bitmap Nativos deste tópico para obter informações sobre o suporte à propriedade global.
No WIC, os decodificadores de bitmap são representados pela interface IWICBitmapDecoder e fornecem acesso a essas propriedades globais do bitmap e, mais importante, aos quadros que ele contém. A interface IWICBitmapFrameDecode representa um quadro bitmap individual e é discutida detalhadamente na Visão geral das fontes do Bitmap.
Decodificadores de Bitmap nativos
O WIC fornece várias implementações nativas da interface IWICBitmapDecoder para os formatos de imagem da Web padrão e o formato de foto HD de alto intervalo dinâmico. A tabela a seguir lista os decodificadores nativos disponíveis, o nome do identificador de classe e o suporte para propriedades globais. Embora um recurso possa não dar suporte a uma propriedade como miniaturas no nível global, o formato de imagem pode dar suporte a essas propriedades no nível de quadro individual.
Formato de imagem | Nome CLSID | Miniaturas | Visualizações | Contextos de cores | Metadados |
---|---|---|---|---|---|
BMP | CLSID_WICBmpDecoder | Não | Não | Não | Não |
GIF | CLSID_WICGifDecoder | Não | Não | Não | Sim |
ICO | CLSID_WICIcoDecoder | Não | Não | Não | Não |
JPEG | CLSID_WICJpegDecoder | Não | Não | Não | Não |
PNG | CLSID_WICPngDecoder | Não | Não | Não | Não |
TIFF | CLSID_WICTiffDecoder | Não | Não | Não | Não |
Foto HD | CLSID_WICWmpDecoder | Não | Sim | Não | Não |
Criando um decodificador bitmap
Para decodificar uma imagem usando WIC, primeiro você precisa criar uma instância do IWICBitmapDecoder para o formato de imagem de destino. A instância do decodificador permite que você acesse as propriedades globais e os metadados, se houver suporte, bem como os quadros de imagem. A fábrica de imagens WIC, IWICImagingFactory, fornece vários métodos para criar decodificadores de bitmap. Os métodos de fábrica a seguir são fornecidos para criar decodificadores de bitmap.
O código a seguir demonstra como criar um decodificador de bitmap usando um nome de arquivo de imagem e recuperar o primeiro quadro da imagem.
// Create a decoder
IWICBitmapDecoder *pDecoder = NULL;
hr = m_pIWICFactory->CreateDecoderFromFilename(
szFileName, // Image to be decoded
NULL, // Do not prefer a particular vendor
GENERIC_READ, // Desired read access to the file
WICDecodeMetadataCacheOnDemand, // Cache metadata when needed
&pDecoder // Pointer to the decoder
);
// Retrieve the first frame of the image from the decoder
IWICBitmapFrameDecode *pFrame = NULL;
if (SUCCEEDED(hr))
{
hr = pDecoder->GetFrame(0, &pFrame);
}
Extensibilidade do decodificador
Um dos principais recursos do WIC é uma estrutura de extensibilidade que permite que os desenvolvedores de codec desenvolvam seus próprios codecs de imagem e obtenham o mesmo suporte de plataforma que as implementações nativas de codecs de imagem. Um único conjunto consistente de interfaces é usado para todo o processamento de imagem, independentemente do formato de imagem. Qualquer aplicativo que usa WIC obtém suporte automático para novos formatos de imagem assim que o codec é instalado. Para obter mais informações sobre o desenvolvimento de codec, consulte os tópicos em Desenvolvimento de Componentes. Para obter mais informações sobre o desenvolvimento do decodificador, consulte Implementando um decodificador de WIC-Enabled.
Tópicos relacionados
-
Conceitual