IWICMetadataBlockWriter 구현
IWICMetadataBlockWriter
프레임 수준 인코딩 클래스는 이 인터페이스를 구현하여 모든 메타데이터 블록을 노출하고 각 블록에 적절한 메타데이터 기록기를 요청합니다. 이미지 형식이 개별 프레임 외부에서 전역 메타데이터를 지원하는 경우 컨테이너 수준 인코더 클래스에서도 이 인터페이스를 구현해야 합니다. 메타데이터 처리기에 대한 자세한 내용은 WIC-Enabled 디코더 구현 섹션의 IWICMetadataBlockReader 섹션을 참조하세요.
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]);
}
IWICMetadataBlockReader를 사용하여 IWICMetadataBlockWriter를 초기화하면 IWICMetadataBlockReader 개체에 의해 노출된 각 메타데이터 판독기에 대한 메타데이터 기록기가 인스턴스화되므로 애플리케이션은 각 메타데이터 블록에 대해 기록기를 명시적으로 요청할 필요가 없습니다.
GetWriterByIndex
GetWriterByIndex 는 n번째 메타데이터 블록에 대한 IWICMetadataWriter 개체를 반환합니다. 여기서 n은 nIndex 매개 변수에 전달된 값입니다. n번째 블록에서 메타데이터 형식을 처리할 수 있는 메타데이터 기록기가 등록되지 않은 경우 구성 요소 팩터리는 메타데이터 블록을 BLOB(Binary Large Object)로 처리하는 알 수 없는 메타데이터 처리기를 반환합니다. 구문 분석을 시도하지 않고 비트 스트림으로 직렬화합니다.
AddWriter
AddWriter 를 사용하면 호출자가 새 메타데이터 작성기를 추가할 수 있습니다. 이는 애플리케이션이 기존 메타데이터 블록과 다른 형식의 메타데이터를 추가하려는 경우에 필요합니다. 예를 들어 애플리케이션은 일부 XMP 메타데이터를 추가할 수 있습니다. 기존 XMP 메타데이터 블록이 없는 경우 애플리케이션은 XMP 메타데이터 작성기를 인스턴스화하고 AddWriter 메서드를 사용하여 메타데이터 작성기 컬렉션에 포함해야 합니다.
SetWriterByIndex
SetWriterByIndex 는 컬렉션의 특정 인덱스에 메타데이터 기록기를 추가하는 데 사용됩니다. 메타데이터 기록기가 현재 해당 인덱스에 있는 경우 새 인덱스가 해당 인덱스를 대체해야 합니다.
RemoveWriterByIndex
RemoveWriterByIndex 는 컬렉션에서 메타데이터 기록기를 제거하는 데 사용됩니다.
관련 항목