Преобразование int в RGB. Визуализация в PHP и HTML / CSS - PullRequest
0 голосов
/ 17 октября 2011

Я пытаюсь визуализировать данные в сетке со значениями ячеек, фактически представленными цветом. Красный означает высокий, а синий означает низкий. Я был настолько наивен, думая, что PHP dechex() поможет мне, просто получив шестнадцатеричный эквивалент целого и используя его как background-color в CSS (я применил необходимое дополнение нулей для небольших значений ).

Но это не совсем дает мне то, что я хочу. Есть ли алгоритм, который позволит мне визуализировать это правильно? Красный означает высокий, синий означает низкий.

Мой текущий код такой:

<?php
    $dec = (int) $map[$y][$x]["total_score"];
    $hex = dechex($dec);
    $color = ($dec <= 65535) ? (($dec) ? "00$hex" : "ffffff") : 
                               (($dec <= 1048575) ? ("0$hex") : $hex);
?>

Обратите внимание, что он делает:

ff0000 в десятичном формате меньше, чем ff00ff, но по цвету первый будет отображаться красным, а второй - фиолетовым. Я хочу, чтобы красный представлял очень высокие десятичные и синие очень низкие десятичные.

Ответы [ 2 ]

0 голосов
/ 17 октября 2011

Я думаю, что RGB не самая лучшая цветовая модель здесь. Я бы пошел с HSL - поддерживается современными браузерами: color: hsl(0.5, 0.5, 0.5) и легко конвертировать в RGB.

HSL позволяет довольно легко определить насыщенность и яркость цвета, а также самого цвета. Синий - это 240 градусов, красный - 360 градусов, поэтому все, что вам нужно сделать, это сопоставить «низкий» с 240, «высокий» с 360 и все среднее значение с диапазоном 240–360.

0 голосов
/ 17 октября 2011

Замените красный на зеленый и удалите зеленый, маскируя 0xFF00FF, чтобы оставить только красный и синий.

$color = $your_decimal_number_you_want_to_colorize; // for example $color is 0x00F777
$color = $color << 8; // color is 0xF77700
$color = $color + ($color & 0x00FF00); // color is 0xF77777
$color = $color & 0xFF00FF; // color is 0xF70077

Используя приведенный выше код, если $a > $b, то $aбудет более красным, чем $b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...