Обзор форматов собственных пикселей
В этом разделе представлены форматы пикселей, предоставляемые компонентом образов Windows (WIC).
Формат пикселя описывает макет памяти каждого пикселя в растровом рисунке. Этот макет памяти описывает, как данные изображения растрового изображения кодируются путем указания числового формата и организации канала цвета. WIC поддерживает несколько числовых форматов для нескольких схем организации канала цвета, предоставляя широкий спектр форматов пикселей.
глубину в битах.
Битовая глубина — это количество битов, используемых для кодирования каждого канала цвета. Сегодня большинство цифровых изображений используют битовую глубину 8, что означает, что каждый канал цвета в пикселе представлен 8 битами, предоставляя 2⁸ (256) уникальные значения на канал. Изображение с битовой глубиной 8 и трех цветовых каналов (таких как красный, зеленый и синий) использует 24 бита на пиксель (bpp), что обеспечивает 2 2 ⁴ (16 777 216) разных цветов на пиксель.
Для лучшего разрешения цветов можно использовать битовую глубину 16 или 32. Это обеспечивает каждый канал цвета с 2⁶ (6555 536) или 2 каждое уникальное значение 2⁶ по цене больше памяти на пиксель.
В некоторых форматах битовая глубина не является несколькими из 8. Эти форматы называются упакованными форматами, так как цветовые каналы в пикселе не выровнены по границам байтов. Например, если битовая глубина 5, три цветовых канала могут храниться в 16 битах (включая 1 бит заливки, чтобы сделать пиксели выровненными по байтам). Упакованные форматы полезны, если объем памяти или мощности обработки ограничен.
Числовая кодировка
Для большинства современных цифровых изображений без знака и неподписанных коротких целых чисел используются для описания числового диапазона каждого канала цветов. Минимальное значение (0) представляет нулевую интенсивность в одном канале цвета, а черное достигается, когда все каналы цвета равны нулю. Аналогичным образом максимальное значение представляет полную интенсивность, и белый достигается, когда все цветовые каналы находятся в полной интенсивности. В битовой глубине 8 UINT предоставляет 256 уникальных значений для каждого канала цвета (от 0 до 255). 16-разрядная UINT предоставляет 65 536 уникальных значений для каждого канала цвета (0 – 65 535).
Кроме того, WIC поддерживает форматы с фиксированной точкой и плавающей запятой. Эти форматы поддерживают более крупные динамические диапазоны, так как весь числовый диапазон каждого канала цвета превышает видимый диапазон. В результате цвета можно настроить выше или ниже видимого диапазона во время промежуточных шагов обработки изображений без потери сведений о изображении.
Числовая кодировка фиксированной точки
16-разрядные значения фиксированной точки интерпретируются как s2.13: бит знака, два целочисленных бита и тринадцать дробных битов. С помощью этой интерпретации числовой диапазон от –4,0 до +3,999... может быть представлено значением 1.0, представленным целочисленным значением со знаком 8192 (0x2000).
32-разрядные значения фиксированной точки интерпретируются как s7.24: бит знака, семь целых битов и двадцать четыре дробных бита. С помощью этой интерпретации числовой диапазон от –128,0 до +127,999... может быть представлено значением 1.0, представленным 16777216 со знаком целочисленным значением (0x01000000).
Цветовые каналы
Цветовые каналы формата пикселя определяют макет памяти каждого цвета в данных изображения растрового изображения. Существует множество различных структур цветового канала, распространенных в современных цифровых изображениях, и WIC обеспечивает поддержку для многих из них.
Цветовая модель RGB/BGR
Форматы RGB и BGR описывают цвета в аддитивной цветовой модели. Наиболее распространенный метод описания изображения состоит из трех отдельных каналов цвета, представляющих красные цвета (R), зеленый (G) и синий (B). WIC обеспечивает поддержку этих трех каналов в порядке красного зеленого синего (RGB) или сине-зеленого красного цвета (BGR). Это порядок, в котором каждый канал цвета отображается в последовательном битовом потоке. Например, в формате GUID_WICPixelFormat32bppRGB каждый пиксель имеет ширину 32 бита. Красный канал является первым (наименее значимым) байтом в памяти, а затем зеленым, а затем синим. И наоборот, в формате GUID_WICPixelFormat32bppBGR цветовые каналы находятся в противоположном порядке. WIC поддерживает ряд форматов RGB/BGR, включая специальные упакованные битовые форматы, такие как GUID_WICPixelFormat16bppBGR555.
Примечание.
Цветовые каналы специальных форматов битовых форматов BGR не находятся в нескольких из 8, таких как цветовые каналы в типичных форматах пикселей. Это означает, что значения канала не выровнены по байтам. Будьте внимательны при чтении упакованных битовых цветов.
Помимо форматов RGB и BGR, WIC также предоставляет форматы пикселей RGB и BGR, поддерживающие альфа-канал (A). Альфа-канал предоставляет данные о непрозрачности для пикселя. Для форматов с добавленным альфа-каналом альфа-канала альфа-канал обычно выполняется в порядке цветового канала. Например, в формате пикселя GUID_WICPixelFormat32bppBGRA порядок байтов — синий, зеленый и красный, а затем альфа-канал.
WIC также поддерживает предварительно умноженные (P) форматы альфа-rgb-пикселей. В типичном формате пикселей RGBA красные, зеленые и синие значения цветов являются фактическими значениями цвета для изображения. Чтобы сделать составное изображение в стандартном формате RGBA, альфа-значение изображения переднего плана должно быть умножено на каждый из красных, зеленых и синих каналов перед добавлением его в цвет фонового изображения. В предварительно умноженном формате альфа-RGB-пикселей каждый канал цветов уже умножен на альфа-значение. Это обеспечивает более эффективный метод композиции изображений с данными альфа-канала. Чтобы получить истинные значения цвета каждого канала в формате пикселя PRGBA/PBGRA, умножение альфа-канала должно быть обратно путем деления значений цвета на альфа-значение.
Цветовая модель CMYK
CMYK — это подтрактивная цветовая модель, используемая в печати. Цвета, созданные моделью CMYK, создаются светом, который не поглощается, но отражается. CMYK — это модель четырех каналов cyan (C), magenta (M), желтая (Y) и черная (K). Если все четыре цветового канала имеют максимальное значение, результат является черным. Как и в цветовой модели RGB/BGR, порядок байтов в последовательном битовом потоке определяется именем формата пикселей. Например, в формате пикселя GUID_WICPixelFormat32bppCMYK каждый пиксель состоит из 32 битов. Первый байт содержит значение цина, за которым следует в свою очередь тянущееся, желтое и черное. WIC предоставляет форматы пикселей для CMYK в 32 и 64 битах на пиксель (bpp).
Помимо стандартной цветовой модели CMYK, WIC также предоставляет CMYK с альфа-форматом. Это позволяет изображениям CMYK иметь альфа-смешающиеся данные, аналогичные цветовой модели RGB/BGR. Альфа-канал расположен сразу после черного в последовательном битовом потоке растрового изображения.
Цветовая модель n-канала
Для гибкости WIC также предоставляет форматы пикселей, которые не имеют предопределенного порядка канала. WIC предоставляет форматы пикселей, поддерживающие от трех до восьми каналов непрерывных данных изображения в битовых глубинах от 8 до 16. В отличие от форматов пикселей RGB/BGR и CMYK, форматы n-канала не указывают порядок каналов, а количество доступных цветовых каналов. Например, в формате пикселя GUID_WICPixelFormat32bpp4Channels каждый пиксель состоит из 32 битов с каждым из 4 каналов, занимающих один байт.
WIC также предоставляет форматы пикселей для n-канала с альфа-каналом. Это позволяет изображениям n-канала иметь альфа-смешивающие данные, аналогичные цветовой модели RGB/BGR и CMYK. Альфа-канал расположен сразу после последнего канала цвета в последовательном битовом потоке растрового изображения.
Индексированные и серые цветовые модели
Индексированные форматы используют таблицу цветов, называемую палитрой. Палитра хранится вне пиксельных данных или определяется неявно. Значение каждого пикселя в изображении — это индекс в палитре. В индексируемом формате число битов на пиксель напрямую связано с количеством записей в палитре. Это значительно сокращает объем данных, необходимых для представления изображения, но также ограничивает количество цветов, доступных для изображения. WIC поддерживает индексированные форматы с 1, 2, 4 или 8 bpp.
Для форматов монохромного (серого) wiC поддерживает 1, 2, 4, 8, 16 и 32 бита на пиксель. Для битовых глубин 1, 8, 16 и 32 цветовые данные хранятся в одном канале. Для битовых глубин 2 или 4 пиксели индексируются в палитре серого уровня.
Цветовая модель Y'CbCr
WIC добавляет поддержку цветовой модели JPEG JFIF Y'CbCr. Y'CbCr разделяют цвета на компонент luma (Y') и два компонента хрома (Cb и Cr). Многие файлы JPEG изначально хранят данные изображения с помощью цветовой модели Y'CbCr.
Человеческая визуальная система менее чувствительна к изменениям хрома, чем к luma, и форматы Y'CbCr могут воспользоваться этим снижением конфиденциальности, уменьшая объем данных хрома, хранящихся относительно luma. Они делают это, сохраняя chroma и luma в отдельных плоскостях и масштабируя каждый плоскость компонентов до другого разрешения. Эта практика называется подсемплингом хрома.
Так как данные chroma и luma хранятся отдельно и могут быть различными разрешениями, WIC определяет отдельные форматы luma и chroma пикселей. WIC поддерживает данные, которые составляют 8 битов на канал.
Формат пикселей WIC
Форматы пикселей в WIC определяются с помощью идентификаторов GUID, чтобы избежать столкновений с IHV. WIC предоставляет понятное имя для ссылки на GUID собственного формата пикселей. Соглашение об именовании для форматов пикселей WIC выглядит следующим образом:
[GUID_WICPixelFormat] [Биты на пиксель] [Порядок каналов] [тип служба хранилища]
Компонент форматирования | Description |
---|---|
GUID_WICPixelFormat | Описательная идентификация для всех форматов пикселей WIC. Понятное имя для всех пикселей WIC начинается с этой строки. |
Биты на пиксель | Количество битов на пиксель (bpp), используемое для формата пикселей. |
Порядок каналов | Модель цветового канала и порядок каждого канала для формата. |
Тип хранилища | Числовая кодировка, используемая для формата пикселей. Кодировка по умолчанию — целое число без знака. Если ничего не соответствует сведениям о цветовой модели, подразумевается целое число без знака (UINT). FixedPoint и Float используются для идентификации форматов пикселей, использующих кодировку с фиксированной точкой и плавающей запятой соответственно. |
Примечание.
Для форматов n-каналов [Порядок каналов] не указывает порядок цветов, а количество доступных каналов. Например, GUID_WICPixelFormat24bpp3Channels предоставляет 3 цветовых канала, где "3Channels" является записью [Channel Order], но указывает только количество каналов, а не порядок.
Например, понятное имя GUID_WICPixelFormat24bppRGB означает, что формат пикселей использует 24 бита на пиксель и цветовую модель RGB. Поскольку имя явно не определяет тип хранилища, подразумевается целое число без знака.
WIC поддерживает несколько форматов пикселей. Следующие таблицы группировать аналогичные форматы пикселей по цветовой структуре, предоставляя дополнительные сведения, такие как глубина бита, биты на пиксель и числовое кодировка. Каждая таблица содержит следующие сведения:
- Понятное имя. Понятное имя формата пикселей.
- Число каналов. Количество цветовых каналов.
- Биты на канал. Количество битов на канал (битовая глубина).
- Биты на пиксель. Количество битов на пиксель, включая любые биты заполнения.
- тип служба хранилища. Числовая кодировка данных изображения. Это значение может быть целым числом без знака (UINT), числом фиксированной точки (FixedPoint) или числом с плавающей запятой (Float).
Примечание.
Для ясности этот документ относится к форматам пикселей только по понятным именам. Фактическое шестнадцатеричное значение для форматов пикселей можно найти в файлах wincodec.h/idl.
Неопределенные форматы пикселей
В следующем списке показаны универсальные форматы пикселей, которые используются, если формат пикселей не определен или не имеет значения для операции изображения.
- GUID_WICPixelFormatUndefined
- GUID_WICPixelFormatDontCare
Индексированные форматы пикселей
В следующей таблице перечислены индексированные форматы пикселей, предоставляемые WIC. В этих форматах значение для каждого пикселя представляет собой индекс в цветовую палитру.
Понятное имя | Число каналов | Бит на пиксель | Тип хранилища |
---|---|---|---|
GUID_WICPixelFormat1bppIndexed | 1 | 1 | UINT |
GUID_WICPixelFormat2bppIndexed | 1 | 2 | UINT |
GUID_WICPixelFormat4bppIndexed | 1 | 4 | UINT |
GUID_WICPixelFormat8bppIndexed | 1 | 8 | UINT |
Форматы упакованных бит-пикселей
В следующей таблице перечислены упакованные битовые форматы, предоставляемые WIC. В этих форматах данные канала цвета не выровнены по байтам.
Понятное имя | Число каналов | Биты на канал | Бит на пиксель | Тип хранилища |
---|---|---|---|---|
GUID_WICPixelFormat16bppBGR555 | 3 | 5 | 16 | UINT |
GUID_WICPixelFormat16bppBGR565 | 3 | 5(B)/6(G)/5(R) | 16 | UINT |
GUID_WICPixelFormat16bppBGRA555 | 4 | 5(B)/5(G)/5(R)/1(A) | 16 | UINT |
GUID_WICPixelFormat32bppBGR101010 | 3 | 10 | 32 | UINT |
GUID_WICPixelFormat32bppRGBA1010102 | 4 | 10(R)/10(G)/10(B)/2(A) | 32 | UINT |
GUID_WICPixelFormat32bppRGBA1010102XR | 4 | 10(R)/10(G)/10(B)/2(A) | 32 | UINT |
GUID_WICPixelFormat32bppR10G10B10A2 | 4 | 10(R)/10(G)/10(B)/2(A) | 32 | UINT |
GUID_WICPixelFormat32bppR10G10B10A2HDR10 | 4 | 10(R)/10(G)/10(B)/2(A) | 32 | UINT |
Для форматов GUID_WICPixelFormat32bppBGR101010 и GUID_WICPixelFormat32bppRGBA1010102 красный канал хранится в наименее значимых битах. Для форматов GUID_WICPixelFormat32bppR10G10B10A2 и GUID_WICPixelFormat32bppR10G10B10A2HDR10 красный канал определяется в наиболее значимых битах, то же макет, что и DXGI_FORMAT_R10G10B10A2_UNORM.
Формат GUID_WICPixelFormat32bppR10G10B10A2HDR10 — это 10-разрядный формат пикселя для HDR10 (цветовое пространство BT.2020 и SMPTE ST.2084 EOTF).
Форматы пикселей серого уровня
В следующей таблице перечислены форматы серого уровня, предоставляемые WIC. В этих форматах цветовые данные представляют оттенки серого.
Понятное имя | Число каналов | Биты на канал | Бит на пиксель | Тип хранилища |
---|---|---|---|---|
GUID_WICPixelFormatBlackWhite | 1 | 1 | 1 | UINT |
GUID_WICPixelFormat2bppGray | 1 | 2 | 2 | UINT |
GUID_WICPixelFormat4bppGray | 1 | 4 | 4 | UINT |
GUID_WICPixelFormat8bppGray | 1 | 8 | 8 | UINT |
GUID_WICPixelFormat16bppGray | 1 | 16 | 16 | UINT |
GUID_WICPixelFormat16bppGrayFixedPoint | 1 | 16 | 16 | FixedPoint |
GUID_WICPixelFormat16bppGrayHalf | 1 | 16 | 16 | Тип с плавающей запятой |
GUID_WICPixelFormat32bppGrayFloat | 1 | 32 | 32 | Тип с плавающей запятой |
GUID_WICPixelFormat32bppGrayFixedPoint | 1 | 32 | 32 | FixedPoint |
Форматы пикселей RGB/BGR
В следующей таблице перечислены форматы RGB/BGR, предоставляемые WIC. Эти форматы разделяют основные данные цвета на красные (R), зеленые (G) и синие (B) каналы. Дополнительный канал альфа-канала (A) предоставляется для сведений о непрозрачности в некоторых форматах.
Понятное имя | Число каналов | Биты на канал | Бит на пиксель | Тип хранилища |
---|---|---|---|---|
GUID_WICPixelFormat24bppRGB | 3 | 8 | 24 | UINT |
GUID_WICPixelFormat24bppBGR | 3 | 8 | 24 | UINT |
GUID_WICPixelFormat32bppBGR | 3 | 8 | 32 | UINT |
GUID_WICPixelFormat32bppRGBA | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat32bppBGRA | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat32bppRGBE* | 4 | 8 | 32 | Тип с плавающей запятой |
GUID_WICPixelFormat32bppPRGBA | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat32bppPBGRA | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat48bppRGB | 3 | 16 | 48 | UINT |
GUID_WICPixelFormat48bppBGR | 3 | 16 | 48 | UINT |
GUID_WICPixelFormat48bppRGBFixedPoint | 3 | 16 | 48 | Фиксированный |
GUID_WICPixelFormat48bppBGRFixedPoint | 3 | 16 | 48 | Фиксированный |
GUID_WICPixelFormat48bppRGBHalf | 3 | 16 | 48 | Тип с плавающей запятой |
GUID_WICPixelFormat64bppRGBA | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat64bppBGRA | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat64bppPRGBA | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat64bppPBGRA | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat64bppRGBFixedPoint | 3 | 16 | 64 | Фиксированный |
GUID_WICPixelFormat64bppRGBAFixedPoint | 4 | 16 | 64 | Фиксированный |
GUID_WICPixelFormat64bppBGRAFixedPoint | 4 | 16 | 64 | Фиксированный |
GUID_WICPixelFormat64bppRGBHalf | 3 | 16 | 64 | Тип с плавающей запятой |
GUID_WICPixelFormat64bppRGBAHalf | 4 | 16 | 64 | Тип с плавающей запятой |
GUID_WICPixelFormat96bppRGBFixedPoint | 3 | 32 | 96 | Фиксированный |
GUID_WICPixelFormat128bppRGBFloat | 3 | 32 | 128 | Тип с плавающей запятой |
GUID_WICPixelFormat128bppRGBAFloat | 4 | 32 | 128 | Тип с плавающей запятой |
GUID_WICPixelFormat128bppPRGBAFloat | 4 | 32 | 128 | Тип с плавающей запятой |
GUID_WICPixelFormat128bppRGBFixedPoint | 3 | 32 | 128 | Фиксированный |
GUID_WICPixelFormat128bppRGBAFixedPoint | 4 | 32 | 128 | Фиксированный |
Примечание.
*Формат GUID_WICPixelFormat32bppRGBE кодирует три 16-разрядных значения с плавающей запятой в 4 байтах, как показано ниже: три 8-разрядных мантисса без знака для каналов R, G и B, а также общий 8-разрядный экспонент. Этот формат обеспечивает 16-разрядную точность с плавающей запятой в меньшем представлении пикселей.
Начиная с Windows 8 и Центра обновления платформы для Windows 7 WIC предоставляет дополнительные форматы, показанные в таблице.
Понятное имя | Число каналов | Биты на канал | Бит на пиксель | Тип хранилища |
---|---|---|---|---|
GUID_WICPixelFormat32bppRGB | 3 | 8 | 32 | UINT |
GUID_WICPixelFormat64bppRGB | 3 | 16 | 64 | UINT |
GUID_WICPixelFormat96bppRGBFloat | 3 | 32 | 96 | FLOAT |
GUID_WICPixelFormat64bppPRGBAHalf | 4 | 16 | 64 | FLOAT |
Форматы пикселей CMYK
В следующей таблице перечислены форматы CMYK, предоставляемые WIC. Эти форматы разделяют основные данные цвета на cyan (C), magenta (M), желтые (Y) и черные (K) каналы.
Понятное имя | Число каналов | Биты на канал | Бит на пиксель | Тип хранилища |
---|---|---|---|---|
GUID_WICPixelFormat32bppCMYK | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat64bppCMYK | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat40bppCMYKAlpha | 5 | 8 | 40 | UINT |
GUID_WICPixelFormat80bppCMYKAlpha | 5 | 16 | 80 | UINT |
Форматы пикселей n-канала
В следующей таблице перечислены форматы n-каналов, предоставляемые WIC. Эти форматы предоставляют ряд неопределенных цветовых каналов для хранения данных изображения.
Понятное имя | Число каналов | Биты на канал | Бит на пиксель | Тип хранилища |
---|---|---|---|---|
GUID_WICPixelFormat24bpp3Channels | 3 | 8 | 24 | UINT |
GUID_WICPixelFormat48bpp3Channels | 3 | 16 | 48 | UINT |
GUID_WICPixelFormat32bpp3ChannelsAlpha | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat64bpp3ChannelsAlpha | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat32bpp4Channels | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat64bpp4Channels | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat40bpp4ChannelsAlpha | 5 | 8 | 40 | UINT |
GUID_WICPixelFormat80bpp4ChannelsAlpha | 5 | 16 | 80 | UINT |
GUID_WICPixelFormat40bpp5Channels | 5 | 8 | 40 | UINT |
GUID_WICPixelFormat80bpp5Channels | 5 | 16 | 80 | UINT |
GUID_WICPixelFormat48bpp5ChannelsAlpha | 6 | 8 | 48 | UINT |
GUID_WICPixelFormat96bpp5ChannelsAlpha | 6 | 16 | 96 | UINT |
GUID_WICPixelFormat48bpp6Channels | 6 | 8 | 48 | UINT |
GUID_WICPixelFormat96bpp6Channels | 6 | 16 | 96 | UINT |
GUID_WICPixelFormat56bpp6ChannelsAlpha | 7 | 8 | 56 | UINT |
GUID_WICPixelFormat112bpp6ChannelsAlpha | 7 | 16 | 112 | UINT |
GUID_WICPixelFormat56bpp7Channels | 7 | 8 | 56 | UINT |
GUID_WICPixelFormat112bpp7Channels | 7 | 16 | 112 | UINT |
GUID_WICPixelFormat64bpp7ChannelsAlpha | 8 | 8 | 64 | UINT |
GUID_WICPixelFormat128bpp7ChannelsAlpha | 8 | 16 | 128 | UINT |
GUID_WICPixelFormat64bpp8Channels | 8 | 8 | 64 | UINT |
GUID_WICPixelFormat128bpp8Channels | 8 | 16 | 128 | UINT |
GUID_WICPixelFormat72bpp8ChannelsAlpha | 9 | 8 | 72 | UINT |
GUID_WICPixelFormat144bpp8ChannelsAlpha | 9 | 16 | 144 | UINT |
Форматы пикселей только для альфа-файлов
В следующей таблице перечислены форматы альфа-только, предоставляемые WIC. Этот формат содержит только альфа-данные.
Понятное имя | Число каналов | Биты на канал | Бит на пиксель | Тип хранилища |
---|---|---|---|---|
GUID_WICPixelFormat8bppAlpha | 1 | 8 | 32 | UINT |
Форматы пикселей Y'CbCr
В следующей таблице перечислены форматы Y'CbCr, предоставляемые WIC. Эти форматы разделяют основные данные цвета на luma (Y), разницу синего хрома (Cb), а также разницу красных хом (Cr). Обратите внимание, что эти форматы предназначены для хранения данных пикселей JPEG JFIF Y'CbCr.
Понятное имя | Число каналов | Бит на пиксель | Тип хранилища |
---|---|---|---|
GUID_WICPixelFormat8bppY | 1 | 8 | UINT |
GUID_WICPixelFormat8bppCb | 1 | 8 | UINT |
GUID_WICPixelFormat8bppCr | 1 | 8 | UINT |
GUID_WICPixelFormat16bppCbCr | 2 | 16 | UINT |
Цветовое пространство
Форматы пикселей сами по себе не имеют цветового пространства. Как правило, цветовое пространство — это семантическая интерпретация значений пикселей, зависящих от контекста растрового изображения. Некоторые изображения определяют контекст цвета, определяющий цветовое пространство изображения. Только в отсутствие контекста цвета следует выводить цветовое пространство.
Сведения о контексте цвета определяются интерфейсом IWICColorContext для WIC. Чтобы получить сведения о контексте цвета для кадра изображения, используйте метод GetColorContext .
В отсутствие сведений о цветовом пространстве для изображения общее правило вывода цветового пространства заключается в том, что форматы ЦВЕТОВого пространства UINT RGB и серого уровня используют стандартное цветовое пространство RGB (sRGB), а форматы RGB и с плавающей запятой и с плавающей запятой используют расширенное цветовое пространство RGB (scRGB). В цветовой модели CMYK используется цветовое пространство RWOP.
Собственные форматы изображений
Каждая из предоставленных кодеков WIC Windows поддерживает подмножество форматов пикселей WIC. Для каждого кодека поддерживаемые форматы декодирования могут отличаться от поддерживаемых форматов кодирования.
При декодировании изображения, если данные изначально хранятся в формате пикселей, который не поддерживается декодером, он будет преобразован в поддерживаемый формат. Чтобы определить формат пикселей вывода, вызовите IWICBitmapFrameDecode::GetPixelFormat.
При кодировании изображения используйте IWICBitmapFrameEncode::SetPixelFormat , чтобы запросить, чтобы кодировщик использовал определенный формат пикселей. Кодировщик возвращает ближайший поддерживаемый формат пикселей, который может отличаться от запрошенного формата.
В следующих таблицах показаны форматы пикселей, поддерживаемые каждым из предоставленных кодеков WIC Windows.
Машинный кодек BMP
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormat1bppIndexed | GUID_WICPixelFormat1bppIndexed |
GUID_WICPixelFormat4bppIndexed | GUID_WICPixelFormat4bppIndexed |
GUID_WICPixelFormat8bppIndexed | GUID_WICPixelFormat8bppIndexed |
GUID_WICPixelFormat16bppBGR555 | GUID_WICPixelFormat16bppBGR555 |
GUID_WICPixelFormat16bppBGR565 | GUID_WICPixelFormat16bppBGR565 |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat32bppBGR | GUID_WICPixelFormat32bppBGR |
GUID_WICPixelFormat32bppBGRA* | GUID_WICPixelFormat32bppBGRA* |
GUID_WICPixelFormat64bppRGBAFixedPoint | GUID_WICPixelFormat32bppPBGRA |
GUID_WICPixelFormat64bppRGBAFixedPoint | |
GUID_WICPixelFormat64bppBGRAFixedPoint |
Примечание.
GUID_WICPixelFormat32bppBGRA поддерживается в Windows 8 и в обновлении платформы для Windows 7 и более поздних версий.
- Чтобы закодировать этот формат, используйте параметр кодировщика EnableV5Header32bppBGRA . BMP будет записан с заголовком BITMAPV5HEADER.
- Если файл имеет BITMAPV5HEADER, он декодирует как GUID_WICPixelFormat32bppBGRA.
Собственный кодек GIF
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormat8bppIndexed | GUID_WICPixelFormat8bppIndexed |
Собственный кодек ICO
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormat32bppBGRA |
Собственный кодек JPEG
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormat8bppGray | GUID_WICPixelFormat8bppGray |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat32bppCMYK | GUID_WICPixelFormat32bppCMYK |
Собственный кодек PNG
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormat1bppIndexed | GUID_WICPixelFormat1bppIndexed |
GUID_WICPixelFormat2bppIndexed | GUID_WICPixelFormat2bppIndexed |
GUID_WICPixelFormat4bppIndexed | GUID_WICPixelFormat4bppIndexed |
GUID_WICPixelFormat8bppIndexed | GUID_WICPixelFormat8bppIndexed |
GUID_WICPixelFormatBlackWhite | GUID_WICPixelFormatBlackWhite |
GUID_WICPixelFormat2bppGray | GUID_WICPixelFormat2bppGray |
GUID_WICPixelFormat4bppGray | GUID_WICPixelFormat4bppGray |
GUID_WICPixelFormat8bppGray | GUID_WICPixelFormat8bppGray |
GUID_WICPixelFormat16bppGray | GUID_WICPixelFormat16bppGray |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat32bppBGRA | GUID_WICPixelFormat32bppBGRA |
GUID_WICPixelFormat48bppRGB | GUID_WICPixelFormat48bppRGB |
GUID_WICPixelFormat64bppRGBA | GUID_WICPixelFormat48bppBGR |
GUID_WICPixelFormat64bppRGBA | |
GUID_WICPixelFormat64bppBGRA |
Собственный кодек TIFF
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormat1bppIndexed | GUID_WICPixelFormat1bppIndexed |
GUID_WICPixelFormat4bppIndexed | GUID_WICPixelFormat4bppIndexed |
GUID_WICPixelFormat8bppIndexed | GUID_WICPixelFormat8bppIndexed |
GUID_WICPixelFormatBlackWhite | GUID_WICPixelFormatBlackWhite |
GUID_WICPixelFormat4bppGray | GUID_WICPixelFormat4bppGray |
GUID_WICPixelFormat8bppGray | GUID_WICPixelFormat8bppGray |
GUID_WICPixelFormat16bppGray | GUID_WICPixelFormat16bppGray |
GUID_WICPixelFormat32bppGrayFloat | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat32bppBGRA |
GUID_WICPixelFormat32bppBGRA | GUID_WICPixelFormat32bppCMYK |
GUID_WICPixelFormat32bppPBGRA | GUID_WICPixelFormat48bppRGB |
GUID_WICPixelFormat48bppRGB | GUID_WICPixelFormat64bppRGBA |
GUID_WICPixelFormat32bppCMYK | |
GUID_WICPixelFormat40bppCMYKAlpha | |
GUID_WICPixelFormat64bppRGBA | |
GUID_WICPixelFormat64bppPRGBA | |
GUID_WICPixelFormat64bppCMYK | |
GUID_WICPixelFormat80bppCMYKAlpha | |
GUID_WICPixelFormat96bppRGBFloat* | |
GUID_WICPixelFormat128bppRGBAFloat | |
GUID_WICPixelFormat128bppPRGBAFloat |
Примечание.
GUID_ WICPixelFormat96bppRGBFloat поддерживается только в Windows 8, обновлении платформы для Windows 7 и более поздних версий.
HEIF native codec
Форматы только для глубины и получения. Эти графические идентификаторы формата пикселей позволяют зрителям фотографий получать альтернативные представления изображения HEIF.
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormat8bppDepth | GUID_WICPixelFormat8bppDepth |
GUID_WICPixelFormat8bppGain | GUID_WICPixelFormat8bppGain |
Собственный кодек JPEG XR
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormatBlackWhite | GUID_WICPixelFormatBlackWhite |
GUID_WICPixelFormat8bppGray | GUID_WICPixelFormat8bppGray |
GUID_WICPixelFormat16bppBGR555 | GUID_WICPixelFormat16bppBGR555 |
GUID_WICPixelFormat16bppGray | GUID_WICPixelFormat16bppGray |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat24bppRGB | GUID_WICPixelFormat24bppRGB |
GUID_WICPixelFormat32bppBGR | GUID_WICPixelFormat32bppBGR |
GUID_WICPixelFormat32bppBGRA | GUID_WICPixelFormat32bppBGRA |
GUID_WICPixelFormat48bppRGBFixedPoint | GUID_WICPixelFormat48bppRGBFixedPoint |
GUID_WICPixelFormat16bppGrayFixedPoint | GUID_WICPixelFormat16bppGrayFixedPoint |
GUID_WICPixelFormat32bppBGR101010 | GUID_WICPixelFormat32bppBGR101010 |
GUID_WICPixelFormat48bppRGB | GUID_WICPixelFormat48bppRGB |
GUID_WICPixelFormat64bppRGBA | GUID_WICPixelFormat64bppRGBA |
GUID_WICPixelFormat96bppRGBFixedPoint | GUID_WICPixelFormat96bppRGBFixedPoint |
GUID_WICPixelFormat96bppRGBFixedPoint | GUID_WICPixelFormat128bppRGBAFloat |
GUID_WICPixelFormat128bppRGBFloat | GUID_WICPixelFormat128bppRGBFloat |
GUID_WICPixelFormat32bppCMYK | GUID_WICPixelFormat32bppCMYK |
GUID_WICPixelFormat64bppRGBAFixedPoint | GUID_WICPixelFormat64bppRGBAFixedPoint |
GUID_WICPixelFormat128bppRGBAFixedPoint | GUID_WICPixelFormat128bppRGBAFixedPoint |
GUID_WICPixelFormat64bppCMYK | GUID_WICPixelFormat64bppCMYK |
GUID_WICPixelFormat24bpp3Channels | GUID_WICPixelFormat24bpp3Channels |
GUID_WICPixelFormat32bpp4Channels | GUID_WICPixelFormat32bpp4Channels |
GUID_WICPixelFormat40bpp5Channels | GUID_WICPixelFormat40bpp5Channels |
GUID_WICPixelFormat48bpp6Channels | GUID_WICPixelFormat48bpp6Channels |
GUID_WICPixelFormat56bpp7Channels | GUID_WICPixelFormat56bpp7Channels |
GUID_WICPixelFormat64bpp8Channels | GUID_WICPixelFormat64bpp8Channels |
GUID_WICPixelFormat48bpp3Channels | GUID_WICPixelFormat48bpp3Channels |
GUID_WICPixelFormat64bpp4Channels | GUID_WICPixelFormat64bpp4Channels |
GUID_WICPixelFormat80bpp5Channels | GUID_WICPixelFormat80bpp5Channels |
GUID_WICPixelFormat96bpp6Channels | GUID_WICPixelFormat96bpp6Channels |
GUID_WICPixelFormat112bpp7Channels | GUID_WICPixelFormat112bpp7Channels |
GUID_WICPixelFormat128bpp8Channels | GUID_WICPixelFormat128bpp8Channels |
GUID_WICPixelFormat40bppCMYKAlpha | GUID_WICPixelFormat40bppCMYKAlpha |
GUID_WICPixelFormat80bppCMYKAlpha | GUID_WICPixelFormat80bppCMYKAlpha |
GUID_WICPixelFormat32bpp3ChannelsAlpha | GUID_WICPixelFormat32bpp3ChannelsAlpha |
GUID_WICPixelFormat64bpp7ChannelsAlpha | GUID_WICPixelFormat40bpp4ChannelsAlpha |
GUID_WICPixelFormat72bpp8ChannelsAlpha | GUID_WICPixelFormat48bpp5ChannelsAlpha |
GUID_WICPixelFormat64bpp3ChannelsAlpha | GUID_WICPixelFormat56bpp6ChannelsAlpha |
GUID_WICPixelFormat80bpp4ChannelsAlpha | GUID_WICPixelFormat64bpp7ChannelsAlpha |
GUID_WICPixelFormat96bpp5ChannelsAlpha | GUID_WICPixelFormat72bpp8ChannelsAlpha |
GUID_WICPixelFormat112bpp6ChannelsAlpha | GUID_WICPixelFormat64bpp3ChannelsAlpha |
GUID_WICPixelFormat128bpp7ChannelsAlpha | GUID_WICPixelFormat80bpp4ChannelsAlpha |
GUID_WICPixelFormat144bpp8ChannelsAlpha | GUID_WICPixelFormat96bpp5ChannelsAlpha |
GUID_WICPixelFormat64bppRGBAHalf | GUID_WICPixelFormat112bpp6ChannelsAlpha |
GUID_WICPixelFormat48bppRGBHalf | GUID_WICPixelFormat128bpp7ChannelsAlpha |
GUID_WICPixelFormat32bppRGBE | GUID_WICPixelFormat144bpp8ChannelsAlpha |
GUID_WICPixelFormat16bppGrayHalf | GUID_WICPixelFormat64bppRGBAHalf |
GUID_WICPixelFormat32bppGrayFixedPoint | GUID_WICPixelFormat48bppRGBHalf |
GUID_WICPixelFormat64bppRGBFixedPoint | GUID_WICPixelFormat32bppRGBE |
GUID_WICPixelFormat128bppRGBFixedPoint | GUID_WICPixelFormat16bppGrayHalf |
GUID_WICPixelFormat64bppRGBHalf | GUID_WICPixelFormatBlackWhite |
Собственный кодек DDS
Форматы пикселей декодировщика | Форматы пикселей кодировщика |
---|---|
GUID_WICPixelFormat32bppBGRA | GUID_WICPixelFormat32bppBGRA |
GUID_WICPixelFormat32bppPBGRA | GUID_WICPixelFormat32bppPBGRA |
Примечание.
Предоставленный кодек DDS Windows поддерживает файлы DDS, закодированные с помощью следующих DXGI_FORMAT значений:
- DXGI_FORMAT_BC1_UNORM
- DXGI_FORMAT_BC2_UNORM
- DXGI_FORMAT_BC3_UNORM
Они декодируются и кодируются как GUID_WICPixelFormat32bppBGRA или GUID_WICPixelFormat32bppPBGRA. Дополнительные сведения см. в обзоре формата DDS.
Расширяемость формата пикселей
Пользовательские форматы изображений могут использовать форматы пикселей, которые изначально не предоставляются WIC, например YCbCr (YUV) и YCCK (Y/Cb/Cr/K). WIC предоставляет модель расширяемости, которая позволяет работать как встроенные, так и пиксельные форматы надстроек для работы в одном конвейере визуализации. Чтобы интегрировать эти форматы пикселей с конвейером изображений WIC, необходимо создать преобразователи формата пикселей для преобразования форматов пикселей надстройки в один или несколько собственных форматов пикселей. Основным интерфейсом для создания преобразователей форматов является IWICFormatConverter.