2010-06-02 4 views
5

Ich habe eine PHP-Variable, die Informationen über Farbe enthält. Zum Beispiel $text_color = "ff90f3". Jetzt möchte ich diese Farbe imagecolorallocate geben. Die imagecolorallocate funktioniert wie folgt aus:Wie kann ich imagecolorallocate eine Farbe geben?

imagecolorallocate($im, 0xFF, 0xFF, 0xFF);

Also, ich versuche folgendes zu tun:

$r_bg = bin2hex("0x".substr($text_color,0,2)); 
$g_bg = bin2hex("0x".substr($text_color,2,2)); 
$b_bg = bin2hex("0x".substr($text_color,4,2)); 
$bg_col = imagecolorallocate($image, $r_bg, $g_bg, $b_bg); 

Es funktioniert nicht. Warum? Ich probiere es auch ohne bin2hex, es hat auch nicht funktioniert. Kann mir jemand dabei helfen?

+0

was macht die bin2hex-funktion? –

+0

Ich bin bin2hex dort, um Zeichenfolgen in hexadezimale Zahl zu transformieren, die an imagecolorallocate gegeben werden sollte. – Roman

+0

Was ist der Unterschied zwischen "String" und "Hexadezimalzahl"? Und ich habe gefragt, was diese Funktion macht, nicht warum hast du sie benutzt. Was bringt es mindestens zurück? In diesem Fall meine ich –

Antwort

5

Von http://forums.devshed.com/php-development-5/gd-hex-resource-imagecolorallocate-265852.html

function hexColorAllocate($im,$hex){ 
    $hex = ltrim($hex,'#'); 
    $a = hexdec(substr($hex,0,2)); 
    $b = hexdec(substr($hex,2,2)); 
    $c = hexdec(substr($hex,4,2)); 
    return imagecolorallocate($im, $a, $b, $c); 
} 

Nutzungs

$img = imagecreatetruecolor(300, 100); 
$color = hexColorAllocate($img, 'ffff00'); 
imagefill($img, 0, 0, $color); 

die Farbe kann als Hex geben werden ffffff oder als #ffffff

0
function hex2RGB($hexStr, $returnAsString = false, $seperator = ',') { 
    $hexStr = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr); // Gets a proper hex string 
    $rgbArray = array(); 
    if (strlen($hexStr) == 6) { //If a proper hex code, convert using bitwise operation. No overhead... faster 
     $colorVal = hexdec($hexStr); 
     $rgbArray['red'] = 0xFF & ($colorVal >> 0x10); 
     $rgbArray['green'] = 0xFF & ($colorVal >> 0x8); 
     $rgbArray['blue'] = 0xFF & $colorVal; 
    } elseif (strlen($hexStr) == 3) { //if shorthand notation, need some string manipulations 
     $rgbArray['red'] = hexdec(str_repeat(substr($hexStr, 0, 1), 2)); 
     $rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2)); 
     $rgbArray['blue'] = hexdec(str_repeat(substr($hexStr, 2, 1), 2)); 
    } else { 
     return false; //Invalid hex color code 
    } 
    return $returnAsString ? implode($seperator, $rgbArray) : $rgbArray; // returns the rgb string or the associative array 
}