funzione codice esadecimale colori?

  • Creatore Discussione Creatore Discussione Marvin94
  • Data di inizio Data di inizio

Marvin94

Nuovo Utente
8 Gen 2015
2
1
0
Esiste una funzione PHP da qualche parte che riceve in input una stringa con il valore esadecimale di un colore, e restiuisca (approssimativamente) in output il nome di quel colore? Grazie in anticipo.
 
Potresti provare il codice postato qui:
PHP:
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 $rgb; // ritorna un array con i valori rgb
}
Eseguendo
PHP:
$rgb = hex2rgb("#colore-esadecimale");
Otterrai il valore rgb di un colore. Dopodichè, facendo riferimento ad un elenco come quello presente su wikipedia (en), puoi confrontare il valore ottenuto con quello di altri colori, ad esempio così:
PHP:
$rgb = hex2rgb("#FFFFFF"); 
$red = $rgb[0]/255;
$green = $rgb[1]/255;
$blue = $rgb[2]/255;
if($green>0.75 AND $red>0.75 AND $blue>0.75){
	echo 'Bianco';
}
else if($green>0.5 AND $red>0.5 AND $blue>0.5){
	echo 'Argento';
}
else if($green>0 AND $red>0 AND $blue>0){
	echo 'Grigio';
}
else if($green==0 AND $red==0 AND $blue==0){
	echo 'Nero';
}
else if($red>50 AND $green<10 AND $blue<10){
	echo 'Rosso';
}


EDIT: ho scritto una funzione che dovrebbe corrispondere esattamente alle tue esigenze.
Per usarla sul tuo sito, è sufficiente includere queste righe di codice:
PHP:
<?php
$esadecimale = "esadecimale-senza-#";
$colore = file_get_contents("http://stubborn.altervista.org/tools/hex-to-color.php?hex=".$esadecimale);
?>
Per il momento, essendo una versione beta, non è detto che riconosca tutti i colori ed è probabile che in alcuni casi dia un risultato approssimativo.
 
Ultima modifica:

Discussioni simili