Цветовая модель RGBA - RGBA color model

Пример изображения RGBA с полупрозрачными и прозрачными частями, наложенного на фоне шахматной доски

RGBA означает красный зеленый синий альфа. Хотя его иногда называют цветовое пространство, на самом деле это трехканальный Цветовая модель RGB дополнен четвертым альфа-канал. Альфа указывает, насколько непрозрачен каждый пиксель, и позволяет комбинировать изображение с другими, используя альфа-композитинг, с прозрачный области и сглаживание краев непрозрачных областей.

Срок делает нет определить, какое цветовое пространство RGB используется. Также не указывается, соответствуют ли цвета предварительно умноженный по альфа-значению, и если да, то в нем не указывается, в каком цветовом пространстве было выполнено предварительное умножение. Это означает, что для определения того, как обрабатывать изображение, требуется больше информации, чем просто «RGBA».

В некоторых контекстах аббревиатура «RGBA» означает конкретный макет памяти (называемый RGBA8888 ниже), с другими терминами, такими как «BGRA», используемыми для альтернатив. В других контекстах «RGBA» означает любой макет.

Представление

В компьютерной графике пиксели, кодирующие информацию о цветовом пространстве RGBA, должны храниться в память компьютера (или в файлах на диске). В большинстве случаев используются четыре части смежной памяти равного размера, по одной для каждого канала, и 0 в канале указывает черный цвет или прозрачную альфа-канал, а биты «все 1» указывают на белый или полностью непрозрачный альфа-канал. Безусловно, наиболее распространенным форматом является хранение 8 бит (один байт ) для каждого канала, что составляет 32 бита для каждого пикселя.

В порядок из этих четырех байтов в памяти могут различаться, что может привести к путанице при обмене данными изображения. Эти кодировки часто обозначаются четырьмя буквами в некотором порядке (например, RGBA, ARGB и т. Д.). Интерпретация этой четырехбуквенной мнемоники не установлена. Есть два типичных способа понять мнемонику, такую ​​как «RGBA»:

  • В схеме порядка байтов "RGBA" означает байт R, за которым следует байт G, за которым следует байт B, за которым следует байт A. Эта схема обычно используется для описания форматов файлов или сетевых протоколов, которые оба ориентированы на байты.
  • В схеме порядка слов «RGBA» понимается как полное 32-битное слово, где R более значимо, чем G, которое более значимо, чем B, которое более значимо, чем A.

В прямой порядок байтов системы, две схемы эквивалентны. Это не так для прямой порядок байтов система, в которой две мнемоники являются противоположными друг другу. Поэтому, чтобы быть недвусмысленным, важно указать, какой порядок используется при ссылке на кодировку. В этой статье будет использоваться популярная схема, которая заключается в добавлении суффикса «8888», чтобы указать, 4 8-битных блока или «32», если обсуждается один 32-битный блок.

Конвертер представления RGBA
Little-endianС прямым порядком байтов
RGBA8888ABGR32RGBA32
ARGB32BGRA8888ARGB8888
RGBA32ABGR8888RGBA8888

RGBA8888

В OpenGL и Переносимая сетевая графика (PNG) используется порядок байтов RGBA, где цвета хранятся в памяти так, что R находится по наименьшему адресу, G после него, B после него и A последним. В архитектуре с прямым порядком байтов это эквивалентно ABGR32.[1]

Во многих системах, когда на канал больше 8 бит (например, 16 бит или с плавающей запятой), каналы сохраняются в порядке RGBA, даже если 8-битные каналы хранятся в другом порядке.

ARGB32

Каналы расположены в памяти таким образом, что одно 32-битное целое число без знака имеет альфа-выборку в 8 самых высоких битах, за которой следуют красная выборка, зеленая выборка и, наконец, синяя выборка в самых младших 8 битах:

Пример макета в типичном пикселе 32bpp

Значения ARGB обычно выражаются с помощью 8 шестнадцатеричный цифры, каждая пара шестнадцатеричных цифр представляет значения альфа, красного, зеленого и синего каналов соответственно. Например, 80FFFF00 представляет 50,2% непрозрачного (без предварительного умножения) желтого цвета. В 80 шестнадцатеричное значение, равное 128 в десятичном формате, представляет альфа-значение 50,2%, поскольку 128 составляет примерно 50,2% от максимального значения 255 (шестнадцатеричный FF); продолжать расшифровывать 80FFFF00 значение, первое FF представляет максимальное значение, которое может иметь красный цвет; второй FF аналогичен предыдущему, но для зеленого цвета; финал 00 представляет минимальное значение, которое может иметь синий (фактически - не синий). Следовательно, красный + зеленый дает желтый. В случаях, когда альфа не используется, это число может быть сокращено до 6 цифр. RRGGBB, поэтому было решено поместить альфа в верхние биты. В зависимости от контекста a 0x или числовой знак (#)[2] ставится перед шестнадцатеричными цифрами.

Этот макет стал популярным, когда на персональных компьютерах был представлен 24-битный цвет (и 32-битный RGBA). В то время программам было намного быстрее и проще управлять одним 32-битным блоком, чем четырьмя 8-битными блоками.

В системах с прямым порядком байтов это эквивалентно порядку байтов BGRA. В системах с прямым порядком байтов это эквивалентно порядку байтов ARGB.

RGBA32

В некоторых программах, созданных на машинах с прямым порядком байтов, таких как Силиконовая Графика, цвета хранились в 32-битном формате, аналогично ARGB32, но с альфа-каналом в Нижний 8 бит, а не верх. Например, 808000FF будет красный и зеленый: 50,2%, синий: 0% и альфа: 100%, коричневый. Это то, что вы получили бы, если бы данные RGBA8888 читались на этих машинах как слова. Он используется в Портативная произвольная карта И в ФЛТК, но вообще редко.

Макет пикселя RGBA

Байты хранятся в памяти на машине с прямым порядком байтов в порядке ABGR.

Смотрите также

Рекомендации

  1. ^ Спецификация PNG
  2. ^ Справочник по цветовой структуре Microsoft MSDN XAML (XAML / WPF / Silverlight), включая #aarrggbb и sc # scA, scR, scG, scB

внешняя ссылка