Implementando IWICMetadataBlockWriter
IWICMetadataBlockWriter
A classe de codificação no nível do quadro implementa essa interface para expor todos os blocos de metadados e solicitar o gravador de metadados apropriado para cada bloco. Se o formato de imagem der suporte a metadados globais, fora de qualquer quadro individual, você também deverá implementar essa interface na classe de codificador no nível do contêiner. Para obter uma discussão mais detalhada sobre manipuladores de metadados, consulte a seção no IWICMetadataBlockReader na seção sobre Como implementar um decodificador de 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 usa um IWICMetadataBlockReader para inicializar o gravador de blocos. Você pode obter o IWICMetadataBlockReader do decodificador que decodificou a imagem.
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]);
}
Como inicializar o IWICMetadataBlockWriter com um IWICMetadataBlockReader cria uma instância de um gravador de metadados para cada leitor de metadados exposto pelo objeto IWICMetadataBlockReader , o aplicativo não precisa solicitar explicitamente um gravador para cada bloco de metadados.
GetWriterByIndex
GetWriterByIndex retorna o objeto IWICMetadataWriter para o nth metadata block, em que n é o valor passado no parâmetro nIndex . Se não houver nenhum gravador de metadados registrado que possa lidar com o tipo de metadados no nº bloco, a fábrica de componentes retornará o Manipulador de Metadados Desconhecido, que tratará o bloco de metadados como um BLOB (objeto binário grande). Ele o serializará como um fluxo de bits sem tentar analisá-lo.
AddWriter
AddWriter permite que um chamador adicione um novo gravador de metadados. Isso será necessário se um aplicativo quiser adicionar metadados de um formato diferente de qualquer um dos blocos de metadados existentes. Por exemplo, um aplicativo pode querer adicionar alguns metadados XMP. Se não houver nenhum bloco de metadados XMP existente, o aplicativo deverá criar uma instância de um gravador de metadados XMP e usar o método AddWriter para incluí-lo na coleção de gravadores de metadados.
SetWriterByIndex
SetWriterByIndex é usado para adicionar um gravador de metadados a um índice específico na coleção. Se um gravador de metadados existir no momento nesse índice, o novo deverá substituí-lo.
RemoveWriterByIndex
RemoveWriterByIndex é usado para remover um gravador de metadados da coleção.
Tópicos relacionados
-
Conceitual