이미지에서 프레임을 검색하는 방법
이 항목에서는 다중 프레임 이미지를 디코딩하고 처리를 위해 각 프레임을 검색하는 방법을 보여 줍니다.
이미지의 프레임을 검색하려면
IWICImagingFactory를 만들어 WIC(Windows 이미징 구성 요소) 개체를 만듭니다.
// Create WIC factory hr = CoCreateInstance( CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pIWICFactory) );
CreateDecoderFromFilename 메서드를 사용하여 이미지 파일에서 IWICBitmapDecoder를 만듭니다.
HRESULT hr = S_OK; IWICBitmapDecoder *pIDecoder = NULL; IWICBitmapFrameDecode *pIDecoderFrame = NULL; UINT nFrameCount = 0; UINT uiWidth, uiHeight; // Create decoder for an image. hr = m_pIWICFactory->CreateDecoderFromFilename( L"creek.tiff", // Image to be decoded NULL, // Do not prefer a particular vendor GENERIC_READ, // Desired read access to the file WICDecodeMetadataCacheOnDemand, // Cache metadata when needed &pIDecoder // Pointer to the decoder );
이미지의 프레임 수를 검색합니다.
// Retrieve the frame count of the image. if (SUCCEEDED(hr)) { hr = pIDecoder->GetFrameCount(&nFrameCount); }
이미지의 각 프레임에 대해 IWICBitmapFrameDecode 를 가져와 각 프레임을 처리합니다.
// Process each frame in the image. for (UINT i=0; i < nFrameCount; i++) { // Retrieve the next bitmap frame. if (SUCCEEDED(hr)) { hr = pIDecoder->GetFrame(i, &pIDecoderFrame); } // Retrieve the size of the bitmap frame. if (SUCCEEDED(hr)) { hr = pIDecoderFrame->GetSize(&uiWidth, &uiHeight); } // Additional frame processing. // ... SafeRelease(&pIDecoderFrame); }
참고 항목