Udostępnij za pośrednictwem


Implementacja IWICMetadataBlockWriter

IWICMetadataBlockWriter

Klasa kodowania na poziomie ramki implementuje ten interfejs, aby uwidocznić wszystkie bloki metadanych i zażądać odpowiedniego modułu zapisywania metadanych dla każdego bloku. Jeśli format obrazu obsługuje metadane globalne, niezależnie od pojedynczej ramki, należy również zaimplementować ten interfejs w klasie kodera kontenera. Aby zapoznać się z bardziej szczegółowym omówieniem procedur obsługi metadanych, zapoznaj się z sekcją dotyczącą IWICMetadataBlockReader w sekcji Implementowanie dekodera 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 używa IWICMetadataBlockReader do zainicjowania składnika zapisującego bloki. Możesz uzyskać IWICMetadataBlockReader z dekodera, który zdekodował obraz.

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]);
}

Ponieważ inicjowanie IWICMetadataBlockWriter za pomocą IWICMetadataBlockReader tworzy moduł zapisywania metadanych dla każdego czytnika metadanych uwidocznionego przez obiekt IWICMetadataBlockReader, aplikacja nie musi jawnie żądać modułu zapisywania metadanych dla każdego bloku metadanych.

PobierzPiszącegoWedługIndeksu

GetWriterByIndex zwraca obiekt IWICMetadataWriter dla bloku metadanych nth, gdzie n jest wartością przekazaną w parametrze nIndex. Jeśli nie zarejestrowano pisarza metadanych, który może obsłużyć typ metadanych w n-tym bloku, fabryka komponentów zwróci moduł obsługi nieznanych metadanych, który będzie traktował blok metadanych jako binarny duży obiekt (BLOB). Będzie serializować go jako strumień bitowy bez próby analizy.

AddWriter

AddWriter umożliwia obiektowi wywołującym dodanie nowego modułu zapisywania metadanych. Jest to wymagane, jeśli aplikacja chce dodać metadane innego formatu niż którykolwiek z istniejących bloków metadanych. Na przykład aplikacja może chcieć dodać pewne metadane XMP. Jeśli nie ma istniejącego bloku metadanych XMP, aplikacja musi utworzyć wystąpienie składnika zapisywania metadanych XMP i użyć metody AddWriter, aby uwzględnić ją w kolekcji składników zapisywania metadanych.

SetWriterByIndex

SetWriterByIndex służy do dodawania pisarza metadanych do określonego indeksu w kolekcji. Jeśli moduł zapisywania metadanych istnieje obecnie w tym indeksie, nowy powinien go zastąpić.

UsuńPisarzaWedługIndeksu

RemoveWriterByIndex służy do usuwania pisarza metadanych z kolekcji.

koncepcyjny

implementowanie IWICBitmapFrameEncode

Instalacja i rejestracja programu CODEC

Jak napisać WIC-Enabled CODEC

Składnik programu Windows Imaging — omówienie