2011-09-19 130 views
0
我有在正確的顏色填充問題

顏色十六進制到imagefilledrectangle

$bgColor = '9EA5FF'; 
imagefilledrectangle($im, 0, 0, 11, 214,'0x' . $bgColor); 

OR

$bgColor = '0x9EA5FF'; 
imagefilledrectangle($im, 0, 0, 11, 214,$bgColor); 

似乎代碼(一個或多個)上方不存在於正方形作爲填它應該(它只是黑色),但是這個代碼:

imagefilledrectangle($im, 0, 0, 11, 214,'0x9EA5FF'); 

是的。

我在做什麼不正確?

回答

1

嘗試使用imagecolorallocate()函數爲您所需的顏色使用RGB三元組設置您的$ bgColor變量。 imagecolorallocate()旨在返回要傳遞給imagefilledrectangle()的顏色標識符。

根據GD的文檔,必須調用「imagecolorallocate()來創建要在圖像表示的圖像中使用的每種顏色。」

+0

我該怎麼做呢? – StealthRT

+0

您可以替換讀取$ bgColor ='9EA5FF'的行;用這個:$ bgColor = imagecolorallocate($ im,168,155,255); – Andrew

+0

好吧,我明白了:)謝謝! – StealthRT

0
function html2rgb($color) 
{ 
    if ($color[0] == '#') 
     $color = substr($color, 1); 

    if (strlen($color) == 6) 
     list($r, $g, $b) = array($color[0].$color[1], 
          $color[2].$color[3], 
          $color[4].$color[5]); 
    elseif (strlen($color) == 3) 
     list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]); 
    else 
     return false; 

    $r = hexdec($r); $g = hexdec($g); $b = hexdec($b); 

    return array($r, $g, $b); 
} 


$theRGB = html2rgb($bgColor); 
$background = imagecolorallocate($im, $theRGB[0], $theRGB[1], $theRGB[2]); 
imagefilledrectangle($im, 0, 0, 11, 214,$background);