Implémentation d’IWICBitmapFrameDecode
Iwicbitmapframedecode
IWICBitmapFrameDecode est l’interface au niveau de l’image qui fournit l’accès aux bits d’image réels. Vous implémentez cette interface sur votre classe de décodage au niveau de l’image. Étant donné qu’il est dérivé de IWICBitmapSource, votre implémentation de IWICBitmapFrameDecode inclura une implémentation des méthodes IWICBitmapSource . Les méthodes supplémentaires sur IWICBitmapFrameDecode permettent d’accéder à la miniature au niveau de l’image, aux contextes de couleur de l’image et au lecteur de requête de métadonnées pour le cadre.
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
- GetColorContexts
- GetMetadataQueryReader
- GetSize, GetPixelFormat et GetResolution
- CopyPixels
- CopyPalette
GetThumbnail
GetThumbnail retourne la miniature de l’image actuelle. Pour des raisons de performances, les miniatures sont généralement encodées au format JPEG. Comme avec la préversion sur le décodeur, il n’est pas nécessaire ou recommandé de fournir votre propre décodeur JPEG pour les miniatures. Au lieu de cela, vous devez déléguer au décodeur JPEG fourni par le composant d’acquisition d’images Windows (WIC).
Pour plus d’informations sur les miniatures, consultez la méthode SetThumbnail sur l’implémentation d’IWICBitmapFrameEncode.
GetColorContexts
GetColorContexts retourne les contextes de couleur valides (également appelés profils de couleur) associés à l’image dans ce cadre. Dans la plupart des cas, il ne s’agit que d’un seul, mais il peut y en avoir deux ou, rarement, plus. L’appelant transmet un ou plusieurs objets IWICColorContext , en définissant le paramètre cCount pour indiquer le nombre d’objets qu’ils transmettent. Cette méthode remplit les objets IWICColorContext avec les données de contexte de couleur réelles pour les profils de couleurs associés à l’image. Définissez le paramètre pcActualCount sur le nombre réel de contextes de couleurs associés à l’image, même si celui-ci est supérieur au nombre que vous pouvez retourner. (Dans le cas où plus de contextes de couleurs sont disponibles que le nombre d’objets IWICColorContext transmis par l’appelant, cela indique à l’appelant qu’il y en a un ou plusieurs autres disponibles.)
GetMetadataQueryReader
GetMetadataQueryReader retourne un IWICMetadataQueryReader qu’une application peut utiliser pour récupérer des métadonnées à partir du cadre d’image. Cette interface est implémentée par un gestionnaire de métadonnées et permet à une application d’interroger des propriétés de métadonnées spécifiques appartenant à un format de métadonnées particulier. Pour plus d’informations, consultez Implémentation d’IWICMetadataBlockReader.
Pour instancier un IWICMetadataQueryReader, appelez CreateQueryReaderFromBlockReader sur IWICComponentFactory.
IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;
hr = m_pComponentFactory->CreateQueryReaderFromBlockReader(
static_cast<IWICMetadataBlockWriter*>(this),
&pQueryReader);
GetSize, GetPixelFormat et GetResolution
GetSize, GetPixelFormat et GetResolution sont explicites et retournent les propriétés demandées de l’image.
CopyPixels
CopyPixels est la méthode qu’une application appelle lorsqu’elle souhaite créer une image bitmap en mémoire qui peut être rendue sur l’écran ou l’imprimante. Il s’agit de la méthode qui effectue le décodage réel des bits d’image. Les paramètres sont un rectangle, qui représente la région d’intérêt de l’image source à copier en mémoire ; la foulée, qui spécifie le nombre d’octets dans une ligne d’analyse ; la taille de la mémoire tampon allouée par l’application ; et un pointeur vers la mémoire tampon dans laquelle les bits d’image demandés doivent être copiés. (Pour empêcher les dépassements de mémoire tampon potentiels d’introduire des vulnérabilités de sécurité, veillez à copier uniquement autant de données d’image dans la mémoire tampon que le paramètre cbBufferSize spécifie.)
CopyPalette
Seuls les codecs qui ont des formats de pixels indexés doivent implémenter la méthode CopyPalette . Si une image utilise un format indexé, utilisez cette méthode pour renvoyer la palette de couleurs utilisée dans l’image. Si votre codec n’a pas de format indexé, retournez WINCODEC_ERR_PALETTEUNAVAILABLE.
Rubriques connexes
-
Informations de référence
-
Conceptuel