Niekedy je potrebné získať farbu vo formáte rgb(). Rgb je definícia farby pomocou – red green blue, po našom červená zelená a modrá. Rozsah pre jednotlivú farbu je 0 – 255. Pomocou ich kombinácie sa vytvára finálna farba. Farba, definovaná vo formáte #hex (čo je nakoniec tiež iba definícia týchto troch farieb, ale v hexadecimálnom formáte, v rozsahu 00 – ff, pre každú z nich), sá dá pomocou tejto funkcie previesť na rgb() formát.
function hex2rgb( $color ) { // ak farba obsahuje '#' - treba ju odstrániť if ( $color[0] == '#' ) { $color = substr( $color, 1 ); } // vytvorenie poľa a priradenie k premenným s hodnotami pre každú farbu if ( strlen( $color ) == 6 ) { list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); } elseif ( strlen( $color ) == 3 ) { list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ); } else { return false; } // prevod z hexadecimálneho formátu na decimálnu hodnotu $r = hexdec( $r ); $g = hexdec( $g ); $b = hexdec( $b ); // vráti pole s hodnotami rgb return array( 'red' => $r, 'green' => $g, 'blue' => $b ); }
Funkcia má povinnú jednu premennú $color
. Do funkcie sa posiela farba v #hex formáte, napríklad #ff0000
(alebo #f00
– čo je skrátený formát). Funkcia vráti asociované pole: array( 'red' => 255, 'green' => 0, 'blue' => 0 )
Jednoduchou zmenou, sa dá funkcia upraviť, aby vrátila hodnotu s transparentnosťou rgba(). V definícii je jedno číslo navyše, ktoré určuje transparentnosť v rozsaho 0 – 1.
function hex2rgb( $color, $t = 1 ) { // ak farba obsahuje '#' - treba ju odstrániť if ( $color[0] == '#' ) { $color = substr( $color, 1 ); } // vytvorenie poľa a priradenie k premenným s hodnotami pre každú farbu if ( strlen( $color ) == 6 ) { list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); } elseif ( strlen( $color ) == 3 ) { list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ); } else { return false; } // prevod z hexadecimálneho formátu na decimálnu hodnotu $r = hexdec( $r ); $g = hexdec( $g ); $b = hexdec( $b ); // vráti pole s hodnotami rgb return array( 'red' => $r, 'green' => $g, 'blue' => $b, 'transparent' => $t ); }
Do funkcie je pridaná nepovinná premenná $t
(má preddefinovanú hodnotu na 1 – čo je farba bez transparentnosti). Pre danú premennú je teda rozsah 0 – 1 ( napríklad 0.5
je polovičná, 50%
transparentnosť).