Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
IWICMetadataBlockWriter
- InitializeFromBlockReader
- GetWriterByIndex
- AddWriter
- УстановитьПисателяПоИндексу
- УдалитьПисателяПоИндексу
Класс кодирования на уровне кадра реализует этот интерфейс для предоставления всех блоков метаданных и запроса соответствующего модуля записи метаданных для каждого блока. Если формат изображения поддерживает глобальные метаданные за пределами любого отдельного кадра, этот интерфейс также следует реализовать в классе кодировщика на уровне контейнера. Более подробное обсуждение обработчиков метаданных см. в разделе IWICMetadataBlockReader в разделе о реализации декодера 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 использует IWICMetadataBlockReader для инициализации записи блоков. Вы можете получить IWICMetadataBlockReader от декодера, декодировавшего изображение.
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]);
}
Так как инициализация IWICMetadataBlockWriter с помощью IWICMetadataBlockReader создает экземпляр модуля записи метаданных для каждого средства чтения метаданных, предоставляемого объектом IWICMetadataBlockReader, приложение не требует явно запрашивать модуль записи для каждого блока метаданных.
GetWriterByIndex
GetWriterByIndex возвращает объект IWICMetadataWriter для n-го блока метаданных, где n — это значение, переданное в параметре nIndex. Если не зарегистрирован модуль записи метаданных, который может обрабатывать тип метаданных в n-м блоке, фабрика компонентов вернет обработчик неизвестных метаданных, который будет обрабатывать блок метаданных как двоичный большой объект (BLOB). Он сериализует его как битовый поток, не пытаясь проанализировать его.
AddWriter
AddWriter позволяет вызывающему добавлять новую запись метаданных. Это необходимо, если приложение хочет добавить метаданные другого формата, чем любой из существующих блоков метаданных. Например, приложению может потребоваться добавить некоторые метаданные XMP. Если нет существующего блока метаданных XMP, приложение должно создать экземпляр модуля записи метаданных XMP и использовать метод AddWriter, чтобы включить его в коллекцию средств записи метаданных.
УстановитьПисательПоИндексу
SetWriterByIndex используется для добавления записи метаданных по определенному индексу в коллекции. Если модуль записи метаданных в настоящее время существует в этом индексе, новый должен заменить его.
УдалитьПисателяПоИндексу
RemoveWriterByIndex используется для удаления записывающего метаданные компонента из коллекции.
Связанные разделы
-
концептуальные