[Код] Конвертируем формат цвета из HEX в RGB

Описание кода без конкретной привязки

Модераторы: immortal, newz20

Ответить
Аватара пользователя
Divan
Сообщения: 857
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 266 раз

[Код] Конвертируем формат цвета из HEX в RGB

Сообщение Divan » Ср сен 09, 2020 10:02 pm

Данный код позволит сделать конвертацию цвета из формата HEX в RGB. Как это делать? Смотрите видео.

Конвертируем формат цвета из HEX в RGB

Код: Выделить всё

$color=hexdec(gg('Test.HEXColor'));
    $red   = $color >> 16 & 0xFF;
    $green = $color >> 8 & 0xFF;
    $blue  = $color & 0xFF;
    $cmd=''.$red.','.$green.','.$blue.'';
    sg('Test.RGBColor',$cmd);
Примечание:
Test.HEXColor - сюда вставляем объект и свойство с которого нужно сделать конвертацию цвета формата HEX
Test.RGBColor - сюда будет вставляться конвертированный формат цвета в RGB.
За это сообщение автора Divan поблагодарил:
Chainik (Ср сен 09, 2020 10:39 pm)
Рейтинг: 1.18%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
tarasfrompir
Сообщения: 3131
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 210 раз
Поблагодарили: 782 раза

Re: [Код] Конвертируем формат цвета из HEX в RGB

Сообщение tarasfrompir » Ср сен 09, 2020 10:37 pm

Divan писал(а):
Ср сен 09, 2020 10:02 pm
Данный код позволит сделать конвертацию цвета из формата HEX в RGB. Как это делать? Смотрите видео.

Конвертируем формат цвета из HEX в RGB

Код: Выделить всё

$color=hexdec(gg('Test.HEXColor'));
    $red   = $color >> 16 & 0xFF;
    $green = $color >> 8 & 0xFF;
    $blue  = $color & 0xFF;
    $cmd=''.$red.','.$green.','.$blue.'';
    sg('Test.RGBColor',$cmd);
Примечание:
Test.HEXColor - сюда вставляем объект и свойство с которого нужно сделать конвертацию цвета формата HEX
Test.RGBColor - сюда будет вставляться конвертированный формат цвета в RGB.
а еще есть такие функции -
function hsvToRgb($h, $s, $v)
function rgbToHsv($r, $g, $b)
function hexToHsv($hex)
function hsvToHex($h, $s, $v)
За это сообщение автора tarasfrompir поблагодарили (всего 2):
Divan (Ср сен 09, 2020 10:39 pm) • Chainik (Ср сен 09, 2020 10:40 pm)
Рейтинг: 2.35%
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Divan
Сообщения: 857
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 266 раз

Re: [Код] Конвертируем формат цвета из HEX в RGB

Сообщение Divan » Ср сен 09, 2020 10:40 pm

tarasfrompir писал(а):
Ср сен 09, 2020 10:37 pm
Divan писал(а):
Ср сен 09, 2020 10:02 pm
Данный код позволит сделать конвертацию цвета из формата HEX в RGB. Как это делать? Смотрите видео.

Конвертируем формат цвета из HEX в RGB

Код: Выделить всё

$color=hexdec(gg('Test.HEXColor'));
    $red   = $color >> 16 & 0xFF;
    $green = $color >> 8 & 0xFF;
    $blue  = $color & 0xFF;
    $cmd=''.$red.','.$green.','.$blue.'';
    sg('Test.RGBColor',$cmd);
Примечание:
Test.HEXColor - сюда вставляем объект и свойство с которого нужно сделать конвертацию цвета формата HEX
Test.RGBColor - сюда будет вставляться конвертированный формат цвета в RGB.
а еще есть такие функции -
function hsvToRgb($h, $s, $v)
function rgbToHsv($r, $g, $b)
function hexToHsv($hex)
function hsvToHex($h, $s, $v)
можете расписать подробнее как эти функции использовать?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Chainik
Сообщения: 1387
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 229 раз
Поблагодарили: 433 раза

Re: [Код] Конвертируем формат цвета из HEX в RGB

Сообщение Chainik » Ср сен 09, 2020 10:41 pm

tarasfrompir писал(а):
Ср сен 09, 2020 10:37 pm
а еще есть такие функции -
...
А ведь в базе знаний ничего про них не сказано (( (https://kb.mjdm.ru/vstroennie-v-majordomo-funkcii/)
Аватара пользователя
tarasfrompir
Сообщения: 3131
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 210 раз
Поблагодарили: 782 раза

Re: [Код] Конвертируем формат цвета из HEX в RGB

Сообщение tarasfrompir » Ср сен 09, 2020 11:02 pm

Divan писал(а):
Ср сен 09, 2020 10:40 pm
можете расписать подробнее как эти функции использовать?
ну так а куда подробней ?
rgbToHsv($r, $g, $b)
подаем на функцию как параметры - значение красный, зеленый, синий
а на выходе получаем - это
HSV (англ. Hue, Saturation, Value — тон, насыщенность, значение) или HSB (англ. Hue, Saturation, Brightness — тон, насыщенность, яркость) — цветовая модель
где
Hue — цветовой тон, (например, красный, зелёный или сине-голубой). Варьируется в пределах 0—360°, однако иногда приводится к диапазону 0—100 или 0—1.
Saturation — насыщенность. Варьируется в пределах 0—100 или 0—1. Чем больше этот параметр, тем «чище» цвет, поэтому этот параметр иногда называют чистотой цвета. А чем ближе этот параметр к нулю, тем ближе цвет к нейтральному серому.
Value (значение цвета) или Brightness — яркость. Также задаётся в пределах 0—100 или 0—1.

Пример DebMes(rgbToHsv(0,0,255));
В ответ получим - массив значений [240,1,1]
То есть ярко-синий цвет в rgb может быть определён как (0,0,255) - превратится в HSV формат (240,1,1)
И я так думаю что многие ленты этот тип цвета используют -что будет лучше для передачи на них таких данных о цвете -что есть точнее
Вот и подтверждение:
Судя по статье - https://habr.com/ru/post/166317/
СпойлерПоказать
"Хранится и передаётся цвет пикселя в 24-bit RGB, но значительная часть этого цветового диапазона (ненасыщенные и яркие цвета) не слишком репрезентабельна в отдельных светодиодах. Кроме того, строить симпатичные градиенты в модели RGB не получится — смешивание RGB-цветов даёт не интуитивно-очевидный результат (жёлтый + синий = серый, а хочется — зелёный). Модели HSL и HSV подойдут лучше, но стандартные реализации используют нецелочисленную арифметику. Удобно будет использовать модель, которая сможет компактно хранить параметры цвета и быстро считать их RGB-значения, не используя числа с плавающей запятой и деление на произвольное число — речь идёт о микроконтроллере и сложные алгоритмы нам ни к чему, а деление (кроме небольших степеней двойки) и вовсе противопоказано."
Извените - лентами не пользовался еще , а вот с форматами цветопередачи когда то разбирался - лет так 15 назад. Так что все что помню что ргб формат - не совсем хорош для цветопередачи.
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Divan
Сообщения: 857
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 266 раз

Re: [Код] Конвертируем формат цвета из HEX в RGB

Сообщение Divan » Ср сен 09, 2020 11:16 pm

Нужен наглядный пример кода. Я вижу функцию, но как их использовать в коде? Куда эту функцию вставлять? Откуда берем значение, куда вставляем значение? Как мне эти функции использовать?

function hsvToRgb($h, $s, $v)
function rgbToHsv($r, $g, $b)
function hexToHsv($hex)
function hsvToHex($h, $s, $v)
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
tarasfrompir
Сообщения: 3131
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 210 раз
Поблагодарили: 782 раза

Re: [Код] Конвертируем формат цвета из HEX в RGB

Сообщение tarasfrompir » Ср сен 09, 2020 11:25 pm

tarasfrompir писал(а):
Ср сен 09, 2020 11:02 pm

Пример DebMes(rgbToHsv(0,0,255));
В ответ получим - массив значений [240,1,1]
Странно вроде ж не слепой.. ;) :o :o :o
вот твой пример стандартными функциями - не проверял - но должен работать....

Код: Выделить всё

$color=gg('Test.HEXColor');
$hsv_color = hexToHsv($color);
$rgb_color = hsvToRgb($hsv_color[0], $hsv_color[1], $hsv_color[2])
$cmd=''.$rgb_color[0].','.$rgb_color[1] .','.$rgb_color[2].'';
sg('Test.RGBColor',$cmd);
За это сообщение автора tarasfrompir поблагодарил:
Divan (Чт сен 10, 2020 12:01 am)
Рейтинг: 1.18%
Спасибо нам ПОМОЖЕТ..!
Ответить