Compartir a través de


Implementación de IWICBitmapFrameDecode

IWICBitmapFrameDecode

IWICBitmapFrameDecode es la interfaz de nivel de marco que proporciona acceso a los bits de imagen reales. Esta interfaz se implementa en la clase de descodificación de nivel de fotograma. Dado que se deriva de IWICBitmapSource, la implementación de IWICBitmapFrameDecode incluirá una implementación de los métodos IWICBitmapSource . Los métodos adicionales de IWICBitmapFrameDecode proporcionan acceso a la miniatura de nivel de marco, los contextos de color de la imagen y el lector de consultas de metadatos para el fotograma.

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 devuelve la miniatura del marco actual. Por motivos de rendimiento, las miniaturas se codifican normalmente en un formato JPEG. Al igual que con la vista previa en el descodificador, no es necesario ni recomendado proporcionar su propio descodificador JPEG para miniaturas. En su lugar, debes delegar en el descodificador JPEG proporcionado por Windows Imaging Component (WIC).

Para obtener más información sobre las miniaturas, vea el método SetThumbnail en Implementación de IWICBitmapFrameEncode.

GetColorContexts

GetColorContexts devuelve los contextos de color válidos (también conocidos como perfiles de color) asociados a la imagen de este marco. En la mayoría de los casos, esto solo será uno, pero podría haber casos en los que haya dos o, rara vez, más. El autor de la llamada pasará uno o varios objetos IWICColorContext , estableciendo el parámetro cCount para indicar cuántos pasan. Este método rellena los objetos IWICColorContext con los datos de contexto de color reales de los perfiles de color asociados a la imagen. Establezca el parámetro pcActualCount en el número real de contextos de color asociados a la imagen, incluso si es mayor que el número que se puede devolver. (En el caso de que haya más contextos de color disponibles que el número de objetos IWICColorContext pasados por el autor de la llamada, esto indica al autor de la llamada que hay uno o más disponibles).

GetMetadataQueryReader

GetMetadataQueryReader devuelve un IWICMetadataQueryReader que una aplicación puede usar para recuperar metadatos del marco de imagen. Este controlador de metadatos implementa esta interfaz y permite a una aplicación consultar propiedades de metadatos específicas que pertenecen a un formato de metadatos determinado. Para obtener más información, vea Implementación de IWICMetadataBlockReader.

Para crear una instancia de IWICMetadataQueryReader, llame a CreateQueryReaderFromBlockReader en IWICComponentFactory.

IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;

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

GetSize, GetPixelFormat y GetResolution

GetSize, GetPixelFormat y GetResolution son autoexplicativos y devuelven las propiedades solicitadas de la imagen.

CopyPixels

CopyPixels es el método al que una aplicación llama cuando quiere crear un mapa de bits en la memoria que se puede representar en la pantalla o impresora. Este es el método que realiza la descodificación real de los bits de imagen. Los parámetros son un rectángulo, que representa la región de interés en la imagen de origen que se va a copiar en la memoria; el intervalo, que especifica el número de bytes en una línea de examen; el tamaño del búfer en memoria asignado por la aplicación; y un puntero al búfer en el que se deben copiar los bits de imagen solicitados. (Para evitar que se produzcan posibles saturaciones del búfer al introducir vulnerabilidades de seguridad, asegúrese de copiar solo tantos datos de imagen en el búfer como especifica el parámetro cbBufferSize ).

CopyPalette

Solo los códecs que tengan formatos de píxeles indexados deben implementar el método CopyPalette . Si una imagen usa un formato indizado, use este método para devolver la paleta de colores usados en la imagen. Si el códec no tiene un formato indizado, devuelva WINCODEC_ERR_PALETTEUNAVAILABLE.

Referencia

IWICBitmapSource

IWICBitmapDecoder

IWICBitmapFrameDecode

Conceptual

Implementación de IWICBitmapSource

Implementación de IWICMetadataBlockReader

Cómo escribir un CÓDEC de WIC-Enabled

Información general sobre el componente de creación de imágenes de Windows