다음을 통해 공유


디코딩 개요

이 항목에서는 스트림에서 이미지 파일을 디코딩하는 데 사용되는 핵심 WIC(Windows 이미징 구성 요소) 코덱 구성 요소인 비트맵 디코더를 소개합니다.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

소개

비트맵 디코더는 디지털 이미지의 외부 컨테이너로 볼 수 있으며 전역 속성 및 이미지 프레임에 대한 액세스를 제공합니다. 일부 이미지 형식은 전역 미리 보기, 미리 보기, 색 컨텍스트 또는 메타데이터를 지원하는 반면, 다른 이미지 형식은 프레임 수준에서만 이러한 속성을 제공합니다. 그러나 대부분의 표준 이미지 형식은 이러한 전역 속성을 지원하지 않습니다. 따라서 WIC에서 제공하는 대부분의 네이티브 코덱 구현은 이러한 전역 속성의 대부분을 지원하지 않습니다. 전역 속성 지원에 대한 자세한 내용은 이 항목의 네이티브 비트맵 디코더 섹션의 표를 참조하세요.

WIC에서 비트맵 디코더는 IWICBitmapDecoder 인터페이스로 표시되며 비트맵의 이러한 전역 속성과 포함된 프레임에 대한 액세스를 제공합니다. IWICBitmapFrameDecode 인터페이스는 개별 비트맵 프레임을 나타내며 비트맵 원본 개요에서 자세히 설명합니다.

네이티브 비트맵 디코더

WIC는 표준 웹 이미지 형식 및 높은 동적 범위 HD 사진 형식에 대한 IWICBitmapDecoder 인터페이스의 여러 네이티브 구현을 제공합니다. 다음 표에는 사용 가능한 네이티브 디코더, 클래스 식별자 이름 및 전역 속성에 대한 지원이 나열되어 있습니다. 기능은 전역 수준에서 미리 보기와 같은 속성을 지원하지 않을 수 있지만 이미지 형식은 개별 프레임 수준에서 이러한 속성을 지원할 수 있습니다.

이미지 형식 CLSID 이름 썸네일 미리 보기 색 컨텍스트 메타데이터
BMP CLSID_WICBmpDecoder 아니요 아니요 아니요 아니요
GIF CLSID_WICGifDecoder 아니요 아니요 아니요
ICO CLSID_WICIcoDecoder 아니요 아니요 아니요 아니요
JPEG CLSID_WICJpegDecoder 아니요 아니요 아니요 아니요
PNG CLSID_WICPngDecoder 아니요 아니요 아니요 아니요
TIFF CLSID_WICTiffDecoder 아니요 아니요 아니요 아니요
HD 사진 CLSID_WICWmpDecoder 아니요 아니요 아니요

 

비트맵 디코더 만들기

WIC를 사용하여 이미지를 디코딩하려면 먼저 대상 이미지 형식에 대한 IWICBitmapDecoder의 instance 만들어야 합니다. 디코더 instance 지원되는 경우 전역 속성 및 메타데이터와 이미지 프레임에 액세스할 수 있습니다. WIC 이미징 팩터리 인 IWICImagingFactory는 비트맵 디코더를 만들기 위한 여러 가지 방법을 제공합니다. 비트맵 디코더를 만들기 위해 다음 팩터리 메서드가 제공됩니다.

다음 코드에서는 이미지 파일 이름을 사용하여 비트맵 디코더를 만들고 이미지의 첫 번째 프레임을 검색하는 방법을 보여 줍니다.

   // Create a decoder
   IWICBitmapDecoder *pDecoder = NULL;

   hr = m_pIWICFactory->CreateDecoderFromFilename(
       szFileName,                      // Image to be decoded
       NULL,                            // Do not prefer a particular vendor
       GENERIC_READ,                    // Desired read access to the file
       WICDecodeMetadataCacheOnDemand,  // Cache metadata when needed
       &pDecoder                        // Pointer to the decoder
       );

   // Retrieve the first frame of the image from the decoder
   IWICBitmapFrameDecode *pFrame = NULL;

   if (SUCCEEDED(hr))
   {
       hr = pDecoder->GetFrame(0, &pFrame);
   }

디코더 확장성

WIC의 핵심 기능 중 하나는 코덱 개발자가 자체 이미지 코덱을 개발하고 이미지 코덱의 네이티브 구현과 동일한 플랫폼 지원을 받을 수 있는 확장성 프레임워크입니다. 일관된 단일 인터페이스 집합은 이미지 형식에 관계없이 모든 이미지 처리에 사용됩니다. WIC를 사용하는 모든 애플리케이션은 코덱이 설치되는 즉시 새 이미지 형식에 대한 자동 지원을 받습니다. 코덱 개발에 대한 자세한 내용은 구성 요소 개발의 topics 참조하세요. 디코더 개발에 대한 자세한 내용은 WIC-Enabled 디코더 구현을 참조하세요.

개념

Windows 이미징 구성 요소 개요

인코딩 개요

구성 요소 개발