2012-08-31 267 views
0

我一直在用一些代码来绘制一个圆圈,但我在从形状中移除黑色背景时遇到了问题。我使用imagecopyresampled为其AA功能,以绘制一个平滑的圆,所以我不能使用不同的绘图功能。谢谢。php png图像透明度

<?php 

$img_2 = imagecreatetruecolor(200, 200); 

$red = imagecolorallocate($img_2, 255, 0, 0); 
imagefill($img_2, 0, 0, $red); 


//set circle values 
$xPos = 50; 
$yPos = 80; 
$diameter = 40; 

$img_1 = imagecreatetruecolor(($diameter + 2) * 2, ($diameter + 2) * 2); 

$green = imagecolorallocate($img_1, 0, 255, 0); 

//draw the circle 
imagefilledarc($img_1, $diameter+1, $diameter+1, ($diameter + 2) * 2, ($diameter + 2) *  2, 0, 360, $green, IMG_ARC_PIE); 
imagecopyresampled($img_2, $img_1, $xPos, $yPos, 0, 0, $diameter+2, $diameter+2, ($diameter + 2) * 2, ($diameter + 2) * 2); 


header("Content-type: image/png"); 
imagepng($img_2); 
imagedestroy($img_1); 
imagedestroy($img_2); 

?> 

回答

0

嗯,你可以这样做:

$img_1 = imagecreatetruecolor(($diameter + 2) * 2, ($diameter + 2) * 2); 
imagesavealpha($img_1, TRUE); 
imagefill($img_1, 0, 0, imagecolorallocatealpha($img_1, 255, 0, 0, 127)); 

或者这样:

$img_1 = imagecreatetruecolor(($diameter + 2) * 2, ($diameter + 2) * 2); 
$red = imagecolorallocate($img_1, 255, 0, 0); 
imagefill($img_1, 0, 0, $red); 
+0

感谢您的回答,但第一个选项似乎不工作,而第二个选项填入整个圈子被吸入的img,所以你不再看到一个彩色圆圈,而只是一个彩色正方形。 – user1334130

+0

使用PHP 5.4.6(本地)和5.3.13(2个不同的服务器)进行测试。第一个版本使背景透明,第二个使其变红。我正在填充背景,以便圆圈可见。我假设你将代码放在正确的位置,即在创建$ img_1之后。对? – Alexei

+0

我发誓我上次把它放在那里,它不起作用。第一个很好,谢谢。达姆我觉得很蠢。 – user1334130