PHP Převod z hex do rgb a naopak

Jak převádět v PHP barvy mezi RGB a hex hodnotami? Například #ffffff je RGB(255,255,255).


Zdrojový kód ke stažení hex2rgb.php.txtUkázky k nahlédnutí hex2rgb.php.

Tento problém už jsem nakousl v článku Objektově orientované myšlení. Tady je návod na převod barev mezi RGB hodnotami a hex barvami a naopak.

Je to snadné, postačí tyto dvě funkce:

  1. function hex2rgb($hex) {
  2. if (ereg("^#", $hex)) $hex=substr($hex, 1);
  3. if (strlen($hex)==3) $hex=$hex[0].$hex[0].$hex[1].$hex[1].$hex[2].$hex[2];
  4. elseif (strlen($hex)!=6) return false;
  5. $rgb=array();
  6. $rgb[0] = hexdec(substr($hex,0,2)); // red
  7. $rgb[1] = hexdec(substr($hex,2,2)); // green
  8. $rgb[2] = hexdec(substr($hex,4,2)); // blue
  9. return $rgb;
  10. }
  11. function rgb2hex($rgb) {
  12. $r = dechex($r[0]<0?0:($r[0]>255?255:$r[0]));
  13. $g = dechex($g[0]<0?0:($g[0]>255?255:$g[0]));
  14. $b = dechex($b[0]<0?0:($b[0]>255?255:$b[0]));
  15. $color = (strlen($r) < 2?'0':'').$r;
  16. $color .= (strlen($g) < 2?'0':'').$g;
  17. $color .= (strlen($b) < 2?'0':'').$b;
  18. return '#'.$color;
  19. }

 Fungují jak pro zadání barvy s #, nebo jen s třemi číslicemi. Vyzkoušejte v ukázce.

komentáře

RSS Komentáře k článku RSS Komentáře   Add to Google
11.12.2008 18:28 | Anonym (0x12) | 0x12
19.03.2009 18:38 | Anonym (Jakub Vrána) | Jednodušší rgb2hex

Pro nastavení $r, $g a $b by se dalo použít min() a max(). Pro vytvoření barvy by se dalo použít sprintf(„%02ד).

06.05.2009 12:23 | Anonym (Martin Zvarík) | Trochu lepší funkce...

function hex2rgb(h){
h = (h.charAt(0)==„#“) ? h.substring(1,7) : h;
return [
parseInt(h.sub­string(0,2),16),
parseInt(h.sub­string(2,4),16),
parseInt(h.sub­string(4,6),16)
]; }

Zachytili jsme pokus o napadení spam robotem, tato položka nemůže být přidána do databáze.

WTF

06.05.2009 15:02 | Administrátor | Re: Trochu lepší funkce...

Zachytili jsme pokus o napadení spam robotem, tato položka nemůže být přidána do databáze.

To je triviální ochrana proti spamu, zachytí většinu spamu a 5% klasických příspěvků, když to nebudeme rozebírat bude to fungovat :)

06.05.2009 12:24 | Anonym (Martin) | aha...

to není stránka o javascriptu

Jméno
Název
Text
Lze používat Texy! syntax. Příklad syntaxe: "text odkazu":odkaz, **tučně**, *kurzíva*, `code`. PHP kód uzavírejte do <?php ... ?> a JavaScript do <script> ... </script>