Общие сведения о декодировании
В этом разделе представлен декодер растрового изображения, основной кодек компонента 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.
Связанные разделы