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


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

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

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

Введение

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

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

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

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

Формат образа Имя CLSID Эскизы Предварительные версии Контексты цвета Метаданные
BMP CLSID_WICBmpDecoder Нет Нет Нет Нет
GIF CLSID_WICGifDecoder Нет Нет Нет Да
ICO CLSID_WICIcoDecoder Нет Нет Нет Нет
JPEG CLSID_WICJpegDecoder Нет Нет Нет Нет
PNG CLSID_WICPngDecoder Нет Нет Нет Нет
TIFF 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

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

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