Partilhar via


Visão geral da decodificação

O tópico apresenta o decodificador de bitmap, um componente de codec principal do Windows Imaging Component (WIC) usado para decodificar arquivos de imagem de um fluxo.

Este tópico contém as seguintes seções.

Introdução

Os decodificadores de bitmap podem ser vistos como o contêiner externo de uma imagem digital e fornecem acesso a propriedades globais e quadros de imagem. Alguns formatos de imagem suportam miniaturas globais, visualizações, contextos de cores ou metadados, enquanto outros fornecem essas propriedades apenas no nível do quadro. Observe, no entanto, que muitos dos formatos de imagem padrão não suportam essas propriedades globais. Como tal, muitas das implementações de codec nativo fornecidas pelo WIC não suportam a maioria dessas propriedades globais. Consulte a tabela na seção Decodificadores de bitmap nativos deste tópico para obter informações sobre o suporte a propriedades globais.

No WIC, os decodificadores de bitmap são representados pela interfaceIWICBitmapDecoder e fornecem acesso a essas propriedades globais do bitmap e, mais importante, aos quadros que ele contém. A interfaceIWICBitmapFrameDecode representa um quadro de bitmap individual e é discutida em detalhes no Bitmap Sources Overview.

Decodificadores de bitmap nativos

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 alta gama dinâmica. 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 oferecer suporte a uma propriedade, como miniaturas no nível global, o formato de imagem pode oferecer suporte a essas propriedades no nível de quadro individual.

Formato de imagem Nome CLSID Miniaturas Antevisõ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
Fotografia HD CLSID_WICWmpDecoder Não Sim Não Não

 

Criando um decodificador de 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 suportados, bem como os quadros de imagem. A fábrica de imagens WIC, IWICImagingFactory, fornece vários métodos para criar decodificadores de bitmap. Os seguintes métodos de fábrica 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 descodificador

Um dos principais recursos do WIC é uma estrutura de extensibilidade que permite que os desenvolvedores de codecs desenvolvam seus próprios codecs de imagem e obtenham o mesmo suporte de plataforma que as implementações nativas de codecs de imagem. Um conjunto único e consistente de interfaces é usado para todo o processamento de imagem, independentemente do formato da imagem. Qualquer aplicativo usando WIC recebe 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 Component Development. Para obter mais informações sobre o desenvolvimento do decodificador, consulte Implementando um WIC-Enabled Decodificador.

Conceptual

Visão geral do componente Windows Imaging

Visão geral da codificação

Desenvolvimento de Componentes