Поделиться через


Общие сведения о декодировании

В этом разделе представлен декодер растрового изображения, основной кодек компонента Windows Imaging Component (WIC), используемый для декодирования файлов изображений из потока.

В этом разделе содержатся следующие разделы.

Знакомство

Декодеры растровых изображений можно рассматривать как внешний контейнер цифрового изображения и они предоставляют доступ к глобальным свойствам и кадрам. Некоторые форматы изображений поддерживают глобальные эскизы, предварительные просмотры, контексты цвета или метаданные, а другие предоставляют эти свойства только на уровне кадра. Обратите внимание, что многие стандартные форматы изображений не поддерживают эти глобальные свойства. Таким образом, многие реализации машинного кодека, предоставляемые WIC, не поддерживают большинство этих глобальных свойств. Сведения о поддержке глобальных свойств см. в таблице в разделе "Встроенные декодеры растровых изображений" в этой теме.

В WIC декодеры растровых изображений представлены интерфейсом IWICBitmapDecoder и обеспечивают доступ к этим глобальным свойствам растрового изображения и, что более важно, к кадрам, которые оно содержит. Интерфейс IWICBitmapFrameDecode представляет отдельный кадр растрового изображения и подробно рассматривается в обзоре источников растровых изображений.

Встроенные декодеры растровых изображений

WIC предоставляет несколько собственных реализаций интерфейса IWICBitmapDecoder для стандартных форматов веб-изображений и формата hd photo с высоким динамическим диапазоном. В следующей таблице перечислены доступные собственные декодеры, имя идентификатора класса и поддержка глобальных свойств. Хотя функция может не поддерживать такие свойства, как эскизы, на глобальном уровне, формат изображения может поддерживать эти свойства на уровне отдельного кадра.

Формат изображения Имя CLSID Миниатюры Превью Контексты цвета Метаданные
BMP CLSID_WICBmpDecoder Нет Нет Нет Нет
ГИФ CLSID_WICGifDecoder Нет Нет Нет Да
ICO CLSID_WICIcoDecoder Нет Нет Нет Нет
JPEG CLSID_WICJpegDecoder Нет Нет Нет Нет
PNG CLSID_WICPngDecoder Нет Нет Нет Нет
РАЗМОЛВКА CLSID_WICTiffDecoder Нет Нет Нет Нет
Фотография HD CLSID_WICWmpDecoder Нет Да Нет Нет

 

Создание декодирования растрового изображения

Чтобы декодировать изображение с помощью WIC, сначала необходимо создать экземпляр IWICBitmapDecoder для целевого формата изображения. Экземпляр декодера позволяет получить доступ к глобальным свойствам и метаданным, если он поддерживается, а также к кадрам изображений. Фабрика обработки изображений 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, получает автоматическую поддержку новых форматов изображений после установки кодека. Дополнительные сведения о разработке кодека см. в разделах, посвященных разработке компонентов . Дополнительные сведения о разработке декодера см. в разделе Реализация декодера WIC-Enabled.

концептуальные

Обзор компонента Windows Imaging

Обзор кодирования

Разработка компонентов