[PHP]Преобразование RGB или HEX в длинный целочисленный цвет

Необходимо преобразовать цвета RGB или HEX в «Long Int» для другой программы, использующей этот формат. Однако не уверен в особенностях цветового формата «Long Int».

Можно сгенерировать значения «Long Int» вручную с помощью этого средства выбора цвета http://hide-inoki.com/en/soft/chunter/index.html, но предпочтительнее использовать функцию php.

hexdec генерирует правильный «Long Int» для некоторых шестнадцатеричных значений («FFFFFF», «2F2F2F»), но не для других («123456»).


person phpwns    schedule 03.09.2010    source источник


Ответы (1)


Вы должны иметь возможность использовать функцию PHP hexdec.

hexdec('FFFFFF'): 16777215
hexdec('123456'): 1193046

и Т. Д.

Вы хотите сказать, что эти значения неверны? Или вы использовали dechex вместо этого по ошибке?


Обновление на основе вашего комментария, в котором говорится, что цвет «# 123456» должен быть «5649426» в формате «Long Int»:

5649426 в базе 16 равно 0x563412, поэтому ясно, что для вашего формата требуется BGR вместо RGB.

Поэтому сначала создайте строку «BGR» из строки «RGB», а затем передайте ее в hexdec:

$rgb = '123456';
$bgr = substr($rgb,4,2) . substr($rgb,2,2) . substr($rgb,0,2);
print hexdec($bgr);

дает 5649426.

person dkamins    schedule 03.09.2010
comment
Это была опечатка в вопросе, мой плохой. R18, G52, R86/#123456 == 5649426 в Long Int, и именно здесь результаты hexdec не совпадали с преобразованием палитры цветов. :/ - person phpwns; 03.09.2010
comment
Сладкий, мне было интересно, отличается ли порядок цветов от стандартного RGB, но я недостаточно возился с этим, спасибо! - person phpwns; 03.09.2010