Compartilhar via


Implementando IWICBitmapFrameDecode

Iwicbitmapframedecode

IWICBitmapFrameDecode é a interface no nível do quadro que fornece acesso aos bits de imagem reais. Você implementa essa interface na classe de decodificação no nível do quadro. Como ele é derivado de IWICBitmapSource, sua implementação de IWICBitmapFrameDecode incluirá uma implementação dos métodos IWICBitmapSource . Os métodos adicionais em IWICBitmapFrameDecode fornecem acesso à miniatura no nível do quadro, aos contextos de cor da imagem e ao leitor de consulta de metadados do quadro.

interface IWICBitmapFrameDecode : IWICBitmapSource
{
// Required methods
HRESULT GetThumbnail ( IWICBitmapSource **ppIThumbnail );
HRESULT GetColorContexts ( UINT cCount, 
IWICColorContext **ppIColorContexts, UINT *pcActualCount );
HRESULT GetMetadataQueryReader ( IWICMetadataQueryReader **ppIMetadataQueryReader );

// Methods inherited from IWICBitmapSource
HRESULT GetSize ( UINT *puiWidth, UINT *puiHeight );
HRESULT GetPixelFormat ( WICPixelFormatGUID *pPixelFormat );
HRESULT GetResolution ( double *pDpiX, double *pDpiY );
HRESULT CopyPixels ( const WICRect *prc, 
   UINT cbStride,
   UINT cbBufferSize, 
   BYTE *pbBuffer );
// Optional method
HRESULT CopyPalette ( IWICPalette *pIPalette );
}

GetThumbnail

GetThumbnail retorna a miniatura do quadro atual. Por motivos de desempenho, as miniaturas são mais comumente codificadas em um formato JPEG. Assim como ocorre com a Versão Prévia no decodificador, não é necessário ou recomendado fornecer seu próprio decodificador JPEG para miniaturas. Em vez disso, você deve delegar ao decodificador JPEG fornecido pelo WIC (Componente de Imagem do Windows).

Para obter mais informações sobre miniaturas, consulte o método SetThumbnail em Implementando IWICBitmapFrameEncode.

GetColorContexts

GetColorContexts retorna os contextos de cores válidos (também conhecidos como perfis de cor) associados à imagem nesse quadro. Na maioria dos casos, este será apenas um, mas pode haver casos em que há dois ou, raramente, mais. O chamador passará um ou mais objetos IWICColorContext , definindo o parâmetro cCount para indicar quantos eles estão passando. Esse método preenche os objetos IWICColorContext com os dados de contexto de cor reais para os perfis de cor associados à imagem. Defina o parâmetro pcActualCount como o número real de contextos de cor associados à imagem, mesmo que isso seja maior que o número que você pode retornar. (No caso em que mais contextos de cores estão disponíveis do que o número de objetos IWICColorContext passados pelo chamador, isso informa ao chamador que há um ou mais outros disponíveis.)

GetMetadataQueryReader

GetMetadataQueryReader retorna um IWICMetadataQueryReader que um aplicativo pode usar para recuperar metadados do quadro de imagem. Essa interface é implementada por um manipulador de metadados e permite que um aplicativo consulte propriedades de metadados específicas pertencentes a um formato de metadados específico. Para obter mais informações, consulte Implementando IWICMetadataBlockReader.

Para instanciar um IWICMetadataQueryReader, chame CreateQueryReaderFromBlockReader no IWICComponentFactory.

IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;

hr = m_pComponentFactory->CreateQueryReaderFromBlockReader( 
  static_cast<IWICMetadataBlockWriter*>(this),
  &pQueryReader);

GetSize, GetPixelFormat e GetResolution

GetSize, GetPixelFormat e GetResolution são autoexplicativos e retornam as propriedades solicitadas da imagem.

Copypixels

CopyPixels é o método que um aplicativo chama quando deseja criar um bitmap na memória que pode ser renderizado para a tela ou impressora. Esse é o método que faz a decodificação real dos bits de imagem. Os parâmetros são um retângulo, que representa a região de interesse na imagem de origem a ser copiada na memória; o passo a passo, que especifica o número de bytes em uma linha de verificação; o tamanho do buffer na memória que foi alocado pelo aplicativo; e um ponteiro para o buffer no qual os bits de imagem solicitados devem ser copiados. (Para evitar que possíveis estouros de buffer introduzam vulnerabilidades de segurança, copie apenas o máximo de dados de imagem para o buffer especificado pelo parâmetro cbBufferSize .)

CopyPalette

Somente os codecs que têm formatos de pixel indexados devem implementar o método CopyPalette . Se uma imagem usar um formato indexado, use esse método para retornar a paleta de cores usada na imagem. Se o codec não tiver um formato indexado, retorne WINCODEC_ERR_PALETTEUNAVAILABLE.

Referência

Iwicbitmapsource

Iwicbitmapdecoder

Iwicbitmapframedecode

Conceitual

Implementando IWICBitmapSource

Implementando IWICMetadataBlockReader

Como escrever uma WIC-Enabled CODEC

Visão geral do componente de imagem do Windows