hex2rgb

Maggi13

Mitglied
Hey

Viele Programmierer die einen Generator programmieren, wollen das man dann je nach dem was das für ein Generator ist Farben wählen kann. Wenn dies ein Bilderscript ist muss man erst die HEX zu RGB fürs PHP Script generieren dies hab ich mti diesem code gemacht:

PHP:
$farbe = "$diehexfarbe";
$rot=hexdec(substr($farbe,1,2));
$gruen=hexdec(substr($farbe,3,2));
$blau=hexdec(substr($farbe,5,2));

Wenn der Generator aber viele Farben hat kann dies lange dauern bis man für jedes mal den gleichen code benutzt...

Hab gesehn das man in PHP auch eigene Funktionen machen kann, wie mache ich es nun das wenn ich zb
Code:
$smiliefarbe = hex2rgb("#FF0000");
habe das dann der rgb wert so ausgegebn wird
Code:
R: $smiliefarbe[0]
G: $smiliefarbe[1]
B: $smiliefarbe[2]
oder
Code:
R: $smiliefarbe[r]
G: $smiliefarbe[g]
B: $smiliefarbe[b]
Danke schonmal für Hilfe...;)
 
Zuletzt bearbeitet:
PHP:
function hex2html($code)
{
	if (preg_match('/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i', $code, $match)) {
		array_shift($match);
		return $match;
	}
	return false;
}
 
Das kann nicht sein. Die Funktion liefert entweder ein Array, wenn die Eingabe der Form „#rgb“ (wobei r, g, b zweistellige Hexadezimalzahlen sind), und sonst false.
 
Es geht bei mir aber wirklich nicht schauu:

PHP:
<?php
function hex2rgb($code)
{
    if (preg_match('/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i', $code, $match)) {
        array_shift($match);
        return $match;
    }
    return false;
}  

$rgb = hex2rgb("#123456");

echo"R: $rgb[0] <br>G: $rgb[1] <br>B: $rgb[2]";
?>

Die ausgabe ist dann:

R: 12
G: 34
B: 56
 
Also ich möcte das aus #FFFFFF = 255 255 255 wird...

Das heist ich will das er die webfarben in rgb umwandelt dafür hab ich ja nen script schon gepostet es soll aber ne funktion sein denn ich möchte nen favicon generator amchen jedes pixel soll gezeichnet werden können dies ist aufwändig wenn ich 256 mal oder wie oft das auch noch ist des ding einfügen muss da ist es mit der funktion shcon leichter und schneller...;)

//edit

Danke nochmal wegen der Funktionserstellung hab es nun so gelöst:

PHP:
<?php
function hex2rgb($hex) {
  $color = str_replace('#','',$hex);
  $rgb = array('r' => hexdec(substr($color,0,2)),
               'g' => hexdec(substr($color,2,2)),
               'b' => hexdec(substr($color,4,2)));
  return $rgb;
}

$rgb = hex2rgb("#FFFFFF");

echo"R: $rgb[r] <br>G: $rgb[g] <br>B: $rgb[b]";
?>

nur die Funktion:

PHP:
function hex2rgb($hex) {
  $color = str_replace('#','',$hex);
  $rgb = array('r' => hexdec(substr($color,0,2)),
               'g' => hexdec(substr($color,2,2)),
               'b' => hexdec(substr($color,4,2)));
  return $rgb;
}

Ausgabe ist dann:

R: 255
G: 255
B: 255

xDD
 
Dann musst du einfach noch die hexdec()-Funktion auf die Werte anwenden:
PHP:
function hex2html($code)
{
	if (preg_match('/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i', $code, $match)) {
		array_shift($match);
		$match = array_map('hexdec', $match);
		return $match;
	}
	return false;
}
 
Zurück