Открыть сервис

Преобразование цветовых моделей RGB и HEX

RGB to HEXпроцесс преобразования цвета из аддитивной цветовой модели RGB (Red, Green, Blue) в шестнадцатеричное представление HEX, используемое преимущественно в веб-дизайне и компьютерной графике для задания цвета. В модели RGB каждый цвет описывается тремя числами (каналами) от 0 до 255, а в HEX — шестизначным шестнадцатеричным числом, где первые две цифры отвечают за красный канал, вторые две — за зелёный, последние две — за синий.

Цветовые модели

Модель RGB

Модель RGB основана на физиологии восприятия цвета человеческим глазом. Сетчатка содержит три типа колбочек, чувствительных к длинноволновой (красной), средневолновой (зелёной) и коротковолновой (синей) части спектра. Смешивая эти три базовых цвета с различной интенсивностью, можно получить большинство видимых человеком оттенков. В компьютерной технике интенсивность каждого канала обычно кодируется одним байтом, что даёт 256 градаций (от 0 до 255). Таким образом, модель RGB описывает 16 777 216 возможных цветов (256³).

Модель HEX

HEX (от англ. hexadecimal — шестнадцатеричный) — это способ записи того же цвета, что и RGB, но в другой системе счисления. Вместо трёх десятичных чисел от 0 до 255 используются три пары шестнадцатеричных цифр от 00 до FF. Шестнадцатеричная система счисления имеет основание 16 и использует цифры 0–9 и буквы A–F (где A = 10, B = 11, C = 12, D = 13, E = 14, F = 15). Запись обычно начинается с символа решётки (#), например, #FF0000 — чистый красный, #00FF00 — чистый зелёный, #0000FF — чистый синий, #FFFFFF — белый, #000000 — чёрный.

Алгоритм преобразования

Прямое преобразование (RGB → HEX)

Для перевода цвета из RGB в HEX необходимо выполнить следующие действия:

  1. Взять десятичное значение каждого канала (R, G, B).
  2. Разделить каждое значение на 16. Целая часть от деления даёт первую шестнадцатеричную цифру, остаток — вторую.
  3. Заменить числа 10–15 на буквы A–F.
  4. Объединить полученные пары в строку вида #RRGGBB.

Например, для цвета RGB(255, 128, 0):

  • Красный: 255 ÷ 16 = 15 (остаток 15) → FF
  • Зелёный: 128 ÷ 16 = 8 (остаток 0) → 80
  • Синий: 0 ÷ 16 = 0 (остаток 0) → 00
  • Результат: #FF8000 (оранжевый).

Обратное преобразование (HEX → RGB)

Обратный процесс выполняется следующим образом:

  1. Убрать символ # из строки.
  2. Разбить строку на три пары символов.
  3. Каждую пару перевести из шестнадцатеричной системы в десятичную: первую цифру умножить на 16, прибавить вторую цифру.
  4. Полученные три числа и будут значениями каналов RGB.

Например, для цвета #336699:

  • 33 → 3×16 + 3 = 51
  • 66 → 6×16 + 6 = 102
  • 99 → 9×16 + 9 = 153
  • Результат: RGB(51, 102, 153).

Сокращённая запись HEX

Для цветов, где каждый канал состоит из двух одинаковых цифр (например, #FF0000, #00FF00, #FFFFFF), допустима сокращённая трёхзначная запись: #F00, #0F0, #FFF. Браузеры и программы автоматически интерпретируют трёхзначный HEX как шестизначный, удваивая каждую цифру. Это свойство используется для экономии места в CSS-коде.

Применение

Веб-разработка

HEX-коды являются стандартом де-факто в каскадных таблицах стилей (CSS). Свойство color и background-color принимают значения в формате #RRGGBB. Преимущество HEX перед RGB в CSS заключается в компактности записи: #4285F4 короче, чем rgb(66, 133, 244). Кроме того, HEX-коды удобно копировать из графических редакторов.

Графические редакторы

Adobe Photoshop, Figma, GIMP и другие программы отображают значения цвета одновременно в нескольких форматах, включая RGB и HEX. При создании макетов дизайнеры обычно работают в HEX, поскольку этот формат легко переносить в код. В палитрах и пипетках инструментов значение HEX показывается автоматически при выборе цвета.

Программирование

В языках программирования и библиотеках для работы с графикой часто требуются функции конвертации. Например, в JavaScript можно написать функцию преобразования:

``javascript function rgbToHex(r, g, b) { return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); } ``

В Python аналогичная функция использует форматирование строк: '#%02x%02x%02x' % (r, g, b). Многие библиотеки (PIL, OpenCV) предоставляют встроенные методы для таких преобразований.

Автоматические инструменты

Существует множество онлайн-конвертеров и расширений для браузеров, позволяющих мгновенно переводить цвета из RGB в HEX и обратно. Такие сервисы обычно предоставляют визуальный интерфейс с выбором цвета на палитре и отображением всех форматов одновременно. В операционных системах встроенные инструменты выбора цвета (например, в macOS или Windows) также показывают HEX-значение выбранного цвета.

Особенности и ограничения

Точность

Преобразование между RGB и HEX является взаимно однозначным, поскольку обе модели описывают одно и то же цветовое пространство с одинаковой разрядностью (8 бит на канал). Потери точности не происходит. Однако при переводе из других моделей (HSL, HSV, CMYK) в RGB и далее в HEX возможны округления.

Символ решётки

Символ # перед HEX-кодом не является частью числа, а служит маркером формата. В некоторых контекстах (например, в CSS) его использование обязательно, в других (например, в параметрах командной строки) — недопустимо.

Регистр символов

Буквы A–F в HEX-записи могут быть как заглавными, так и строчными. Оба варианта (#FF0000 и #ff0000) эквивалентны и корректно обрабатываются браузерами и программами. Выбор регистра — вопрос соглашения о стиле кода.

Связь с другими форматами

RGBA и ARGB

Для задания прозрачности используется расширенный формат RGBA, где добавляется четвёртый канал — альфа (от 0 до 1 или от 0 до 255). В HEX-записи прозрачность может быть добавлена как четвёртая пара цифр: #RRGGBBAA. Например, #FF000080 — полупрозрачный красный. Однако поддержка восьмизначного HEX в CSS появилась относительно недавно (CSS Color Module Level 4), поэтому для совместимости чаще используют функцию rgba().

HSL

Модель HSL (Hue, Saturation, Lightness) описывает цвет через тон, насыщенность и светлоту. Преобразование RGB в HSL требует более сложных вычислений и используется в случаях, когда необходимо менять яркость или насыщенность цвета программно. Современные браузеры поддерживают функцию hsl() в CSS, что позволяет задавать цвет без предварительного перевода в HEX.

История

Шестнадцатеричная запись цветов появилась вместе с развитием веб-технологий в начале 1990-х годов. Первоначально в HTML цвет задавался английскими названиями (red, blue, green) или RGB-триплетами в десятичной системе. Однако с ростом популярности CSS в конце 1990-х годов HEX-формат стал основным, так как позволял точнее и компактнее описывать цвета. Спецификация HTML 3.2 (1997 год) официально закрепила использование HEX-кодов для атрибутов цвета.

Загружаем BFOmetr…