Share via


Implémentation d’IWICMetadataBlockWriter

IWICMetadataBlockWriter

La classe d’encodage au niveau de l’image implémente cette interface pour exposer tous les blocs de métadonnées et demander l’enregistreur de métadonnées approprié pour chaque bloc. Si votre format d’image prend en charge les métadonnées globales, en dehors de toute trame individuelle, vous devez également implémenter cette interface sur la classe d’encodeur au niveau du conteneur. Pour une présentation plus détaillée des gestionnaires de métadonnées, reportez-vous à la section sur IWICMetadataBlockReader dans la section implémentation d’un décodeur WIC-Enabled.

interface IWICMetadataBlockWriter : IWICMetadataBlockReader
{
   // All methods required
   HRESULT InitializeFromBlockReader ( IWICMetadataBlockReader *pIMDBlockReader );
   HRESULT GetWriterByIndex ( UINT nIndex, IWICMetadataWriter **ppIMetadataWriter );
   HRESULT AddWriter (IWICMetadataWriter *pIMetadataWriter );
   HRESULT SetWriterByIndex ( UINT nIndex, IWICMetadataWriter *pIMetadataWriter );
   HRESULT RemoveWriterByIndex ( UINT nIndex );
}

InitializeFromBlockReader

InitializeFromBlockReader utilise un IWICMetadataBlockReader pour initialiser l’enregistreur de blocs. Vous pouvez obtenir le IWICMetadataBlockReader à partir du décodeur qui a décodé l’image.

UINT blockCount = 0;
IWICMetadataReader* pMetadataReader = NULL;
IWICMetadataWriter** ppMetadataWriter = NULL;
HRESULT hr;

hr = m_pBlockReader->GetCount(&blockCount);
ppMetadataWriter = IWICMetadataWriter*[blockCount];

for (UINT x=0; x < blockCount; x++)
{
   hr = m_pBlockReader->GetReaderByIndex(&pMetadataReader);
   hr = m_pComponentFactory->CreateMetadataWriterFromReader(
         pMetadataReader, NULL, &ppMetadataWriter[x]);
}

Étant donné que l’initialisation de IWICMetadataBlockWriter avec un IWICMetadataBlockReader instancie un enregistreur de métadonnées pour chaque lecteur de métadonnées exposé par l’objet IWICMetadataBlockReader , l’application n’a pas besoin de demander explicitement un rédacteur pour chaque bloc de métadonnées.

GetWriterByIndex

GetWriterByIndex retourne l’objet IWICMetadataWriter pour le nième bloc de métadonnées, où n est la valeur passée dans le paramètre nIndex . S’il n’existe aucun enregistreur de métadonnées inscrit qui peut gérer le type de métadonnées dans le nième bloc, la fabrique de composants retourne le gestionnaire de métadonnées inconnus, qui traitera le bloc de métadonnées comme un objet BLOB (Binary Large Object). Il le sérialise en tant que flux de bits sans essayer de l’analyser.

AddWriter

AddWriter permet à un appelant d’ajouter un nouvel enregistreur de métadonnées. Cela est obligatoire si une application souhaite ajouter des métadonnées d’un format différent de celui des blocs de métadonnées existants. Par exemple, une application peut vouloir ajouter des métadonnées XMP. S’il n’existe aucun bloc de métadonnées XMP existant, l’application doit instancier un enregistreur de métadonnées XMP et utiliser la méthode AddWriter pour l’inclure dans la collection d’enregistreurs de métadonnées.

SetWriterByIndex

SetWriterByIndex est utilisé pour ajouter un enregistreur de métadonnées à un index spécifique dans la collection. Si un enregistreur de métadonnées existe actuellement au niveau de cet index, le nouveau doit le remplacer.

RemoveWriterByIndex

RemoveWriterByIndex est utilisé pour supprimer un enregistreur de métadonnées de la collection.

Conceptuel

Implémentation d’IWICBitmapFrameEncode

Installation et inscription de CODEC

Comment écrire un codec WIC-Enabled

Vue d’ensemble du composant d’acquisition d’images Windows