2011-07-14 29 views
0

imagecolorallocatealpha()只會讓文字變灰嗎?PHP GD imagecolorallocatealpha只會使灰色文字

<?php 
header('Content-Type: image/png'); 

function checkImg($imgname) { 
    $im = @imagecreatefrompng($imgname); 

if(!$im) { 
    $im = imagecreatetruecolor(150, 30); 
    $bgc = imagecolorallocate($im, 255, 255, 255); 
    $tc = imagecolorallocate($im, 0, 0, 0); 

    imagefilledrectangle($im, 0, 0, 150, 30, $bgc); 

    imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc); 
} 

return $im; 
} 

$hr = 48; 

$tOne = "VALID FOR"; 
$tTwo = $hr." HOURS"; 

$img = checkImg('img.png'); 

$font = 'helr67w.ttf'; 
$size = 9; 

$red = imagecolorallocatealpha($img, 255, 0, 0, 75); 

imagettftext($img, $size, 0, 225, 132, $red, $font, $tOne); 
imagettftext($img, $size, 0, 225, 144, $red, $font, $tTwo); 

imagepng($img); 
imagedestroy($img); 
?> 
+0

請加上'的var_dump($紅)',並告訴它的價值是。並檢查http://www.php.net/manual/en/function.imagesavealpha.php – hakre

+0

返回textbool(false) –

回答

1

在您的代碼中,您不設置圖像以支持Alpha通道。我可以想像,導致問題:

function checkImg($imgname) { 
    $im = @imagecreatefrompng($imgname); 

    if(!$im) { 
     $im = imagecreatetruecolor(150, 30); 
     $bgc = imagecolorallocate($im, 255, 255, 255); 
     $tc = imagecolorallocate($im, 0, 0, 0); 
     imagefilledrectangle($im, 0, 0, 150, 30, $bgc); 
     imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc); 
    } 

    // Turn off alpha blending and set alpha flag 
    imagealphablending($im, true); 
    imagesavealpha($im, true); 
    return $im; 
} 

imagesavealphaPHP ManualimagealphablendingPHP Manual

+0

仍然無法正常工作。這裏是一個屏幕快照,即使設置了alpha標誌:[截圖](https://img.skitch.com/20110714-gdu9m1mdj8bw6bgk6qfx8mfny6.jpg)文本仍然是灰色的。 –

+0

'$ red'的內容是什麼? – hakre

+0

請檢查您的GD庫版本,並檢查您的瀏覽器是否支持帶alpha通道的PNG。我沒有問題讓你的*原代碼工作,將檢查我的修改。 – hakre