Décodage, vue d’ensemble
la rubrique présente le décodeur bitmap, un principal composant codec WIC (Windows Imaging component) utilisé pour décoder les fichiers image d’un flux.
Cette rubrique contient les sections suivantes.
- Introduction
- Décodeurs bitmap natifs
- Création d’un décodeur bitmap
- Extensibilité du décodeur
- Rubriques connexes
Introduction
Les décodeurs bitmap peuvent être affichés comme conteneur externe d’une image numérique et permettent d’accéder à des propriétés globales et à des frames d’image. Certains formats d’image prennent en charge les miniatures globales, les aperçus, les contextes de couleur ou les métadonnées, tandis que d’autres fournissent ces propriétés uniquement au niveau du frame. Notez, toutefois, que la plupart des formats d’image standard ne prennent pas en charge ces propriétés globales. Ainsi, la plupart des implémentations de codec natives fournies par WIC ne prennent pas en charge la plupart de ces propriétés globales. Pour plus d’informations sur la prise en charge des propriétés globales, consultez le tableau dans la section décodeurs bitmap natifs de cette rubrique.
Dans WIC, les décodeurs bitmap sont représentés par l’interface IWICBitmapDecoder et fournissent l’accès à ces propriétés globales de la bitmap et, plus important encore, aux frames qu’elle contient. L’interface IWICBitmapFrameDecode représente un frame de bitmap individuel et est décrite en détail dans la vue d’ensemble des sources bitmap.
Décodeurs bitmap natifs
WIC fournit plusieurs implémentations natives de l’interface IWICBitmapDecoder pour les formats d’image Web standard et le format de photo HD à plage dynamique élevée. Le tableau suivant répertorie les décodeurs natifs disponibles, le nom de l’identificateur de classe et la prise en charge des propriétés globales. Bien qu’une fonctionnalité ne prenne pas en charge une propriété telle que les miniatures au niveau global, le format d’image peut prendre en charge de telles propriétés au niveau du frame individuel.
| Format d'image | Nom du CLSID | Miniatures | Versions préliminaires | Contextes de couleur | Métadonnées |
|---|---|---|---|---|---|
| BMP | CLSID _ WICBmpDecoder | Non | Non | Non | Non |
| GIF | CLSID _ WICGifDecoder | Non | Non | Non | Oui |
| ICO | CLSID _ WICIcoDecoder | Non | Non | Non | Non |
| JPEG | CLSID _ WICJpegDecoder | Non | Non | Non | Non |
| PNG | CLSID _ WICPngDecoder | Non | Non | Non | Non |
| TIFF | CLSID _ WICTiffDecoder | Non | Non | Non | Non |
| Photo HD | CLSID _ WICWmpDecoder | Non | Oui | Non | Non |
Création d’un décodeur bitmap
Pour décoder une image à l’aide de WIC, vous devez d’abord créer une instance de IWICBitmapDecoder pour le format d’image ciblé. L’instance de décodeur vous permet d’accéder aux propriétés globales et aux métadonnées, si elles sont prises en charge, ainsi qu’aux trames d’image. La fabrique d’images WIC, IWICImagingFactory, fournit plusieurs méthodes pour créer des décodeurs bitmap. Les méthodes de fabrique suivantes sont fournies pour créer des décodeurs bitmap.
Le code suivant montre comment créer un décodeur bitmap à l’aide d’un nom de fichier image et récupérer la première image de l’image.
// 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);
}
Extensibilité du décodeur
L’une des principales fonctionnalités de WIC est un Framework d’extensibilité qui permet aux développeurs de codec de développer leurs propres codecs d’image et d’avoir la même prise en charge de plate-forme que les implémentations natives de codecs d’image. Un ensemble unique et cohérent d’interfaces est utilisé pour le traitement de tous les images, quel que soit le format d’image. Toute application utilisant WIC obtient la prise en charge automatique des nouveaux formats d’image dès que le codec est installé. Pour plus d’informations sur le développement de codecs, consultez les rubriques relatives au développement de composants. Pour plus d’informations sur le développement d’un décodeur, consultez implémentation d’un décodeur de WIC-Enabled.