Из Википедии, бесплатной энциклопедии
  (Перенаправлено из цветового пространства RGBA )
Перейти к навигации Перейти к поиску

Пример изображения RGBA, наложенного на фоне шахматной доски. альфа - это 0% вверху и 100% внизу.

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

Этот термин не определяет, какое цветовое пространство RGB используется. Он также не указывает, умножаются ли цвета на значение альфа, и если да, то не указывает, в каком цветовом пространстве было выполнено предварительное умножение. Это означает, что для определения того, как обращаться с изображение.

В некоторых контекстах аббревиатура «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-битный блок.

RGBA8888 [ править ]

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

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

ARGB32 [ править ]

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

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

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

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

RGBA32 [ править ]

В некотором программном обеспечении, созданном на машинах с прямым порядком байтов, таких как Silicon Graphics , цвета хранились в 32-битном формате, аналогичном ARGB32, но с альфа-значением в 8 нижних битах, а не в верхних. Например, 808000FFкрасный и зеленый: 50,2%, синий: 0% и альфа: 100%, коричневый. Это то, что вы получили бы, если бы данные RGBA8888 читались на этих машинах как слова. Он используется в Portable Arbitrary Map и FLTK , но в целом встречается редко.

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

См. Также [ править ]

  • Переносимая сетевая графика

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Альфа-прозрачность по спецификации W3C PNG
  • Цвета RGBA - страница предварительного просмотра с информацией о реализации на CSS3.info