Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > можно ли из #BE4F4F получить RGB?


Автор: azam 27.10.2008, 12:48
Можно ли из цвета в формате #BE4F4F получить R G B   H° S% V%.
Если да то как?

Автор: Endeveit 27.10.2008, 13:14
http://www.javascripter.net/faq/hextorgb.htm есть нечто вроде алгоритма.

Автор: SamDark 27.10.2008, 13:36
azam, 
1. Откидываем решётку.
2. Разбиваем на три части по 2 символа.
3. Переводим из шестнадцатеричной системы в двоичную.

Автор: azam 27.10.2008, 13:54
Уточню вопрос.
Когда я получаю RGB, например, из #BE4F4F то получается  190, 228, 79

Затем когда я использую эти данные в функции  imagecolorallocate($im, 190, 228, 79); то получается совсем другой цвет(видимо с ученом оттенка, насыщенности и яркости он изменяется).

Как учесть оттенок, насыщенность и яркость чтобы получился то же цвет что и #BE4F4F. Или нужно использовать другую функцию????


Автор: skyboy 27.10.2008, 15:18
Цитата(azam @  27.10.2008,  12:54 Найти цитируемый пост)
Когда я получаю RGB, например, из #BE4F4F

а откуда ты берешь этот самый "#BE4F4F"? из макета в растре? а там полупрозрачность для слоя/блока не задана?

Автор: azam 27.10.2008, 16:02
#BE4F4F - пока не откуда не беру просто есть задача надо ее решить.

Код


/*
  $hex = "#BE4F4F";
  $rgb = "";

  for( $i = 0; $i < 3; $i++ )
  {
    $arr[$i] = substr( $hex , 1 * ( $i + 1 ) , 2 );
  }

   $rgb =array(hexdec( $arr[ 0 ] ), hexdec( $arr[ 1 ] ), hexdec( $arr[ 2 ] ));
*/


    $turingWidth = $width;
    $turingHeight = $height;
    $turingResourse = imagecreate($turingWidth, $turingHeight);
    imagecolorallocate($turingResourse, $color[0], $color[1], $color[2]);
    $x = 3;
            
    for($i = 0; $i < strlen($str); $i++)
    {
        $size = rand(($height/2), $height-10);

        //    ВОТ ЗДЕСЬ МНЕ НАДО ПОЛУЧИТЬ ТОЧНО ТАКОЙ ЖЕ ЦВЕТ КАК И  #BE4F4F
        $color2 = imagecolorallocate($turingResourse, rand(0, 150), rand(0, 150), rand(0, 150));

        imagettftext($turingResourse, $size, rand(-15, 15), $x, rand($height-3, $height - 10), $color2, LANG_PATH.'/fonts/arial.ttf', substr($str, $i, 1));

        $x += ($width-10) / strlen($str);
    }


    ob_start();
    imagejpeg($turingResourse);
    $data = ob_get_contents();
    ob_end_clean();
    return $data;


Автор: SelenIT 27.10.2008, 16:11
Объясните мне, дураку, как можно один раз получить из одного 0x4F 228, из другого точно такого же 0x4F - 79... и при этом не заметить ничего подозрительного?

Автор: azam 27.10.2008, 16:47
 _

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)