Script PHP de convertire HEX in RGB

postat acum 2 ani de Stefanescu Mihai in categorie iNoob

Convertirea culorilor din sistemul HEX  in sistemul RGB este necesara in diverse cazuri pentru a asigura functionarea corecta a site-ului tau.

function hex2rgb($hex) {
   $hex = str_replace("#", "", $hex);

   if(strlen($hex) == 3) {
      $r = hexdec(substr($hex,0,1).substr($hex,0,1));
      $g = hexdec(substr($hex,1,1).substr($hex,1,1));
      $b = hexdec(substr($hex,2,1).substr($hex,2,1));
   } else {
      $r = hexdec(substr($hex,0,2));
      $g = hexdec(substr($hex,2,2));
      $b = hexdec(substr($hex,4,2));
   }
   $rgb = array($r, $g, $b);
   //return implode(",", $rgb); // returns the rgb values separated by commas
   return $rgb; // returns an array with the rgb values
}

Aceasta functie functioneaza la fel de bine si cu codurile HEX prescuratate (#f00) cat si cu cele complete (#ff0000). Accepta si semnul de inceput (#). Se poate observa ca avem doua linii de returnare la sfarsit-ul functiei. Prima, ce-a comentata, returneaza valorile RGB separate de virgula. A doua, ce-a standard va returna unarray cu valorile RGB.

Avand aceasta functie o putem folosi in felul urmator:

$rgb = hex2rgb("#cc0");
print_r($rgb);

Functia de mai sus va afisa:

Array ( [0] => 204 [1] => 204 [2] => 0 )

Daca tot convertim codurile HEX  in RGB, de ce sa nu convertim si RGB in HEX?

function rgb2hex($rgb) {
   $hex = "#";
   $hex .= str_pad(dechex($rgb[0]), 2, "0", STR_PAD_LEFT);
   $hex .= str_pad(dechex($rgb[1]), 2, "0", STR_PAD_LEFT);
   $hex .= str_pad(dechex($rgb[2]), 2, "0", STR_PAD_LEFT);

   return $hex; // returns the hex value including the number sign (#)
}

Aceasta va functiona in felul urmator:

$rgb = array( 255, 255, 255 );
$hex = rgb2hex($rgb);
echo $hex;

Si va afisa:

#fffff

 

Sunt un tanar programator din Bucuresti ce lucreaza in PHP/Mysql (MySqli/PDO), Laravel, CodeIgniter, MySQL, PostgreSQL, Wordpress, HTML5/CSS3, Sass, Photoshop si multe altele.
Google+ Community Facebook Group
Acest articol a fost mutat de pe vechea platforma.
Pentru orice eroare aparuta la mutare va rog sa ma contactati!