PHP图像透明

时间:2013-02-04 13:38:27

标签: php image resize thumbnails transparent

我正在尝试使用以下代码调整PNG透明图像的大小:

$src=ImageCreateFrompng($uploadedfile);
$background=imagecolorallocate($src,0,0,0);
imagecolortransparent($src,$background);
imagealphablending($src,false);
imagesavealpha($src,true);
$dst=ImageCreateTrueColor($tn_width,$tn_height);
imagecopyresampled($dst,$src,0,0,0,0,$tn_width,$tn_height,$width,$height);
Imagepng($dst,$dstfile);

我使用了imagealphablending($src,false)imagesavealpha($src,true),但它仍会上传带有黑色背景而非透明背景的图片。

问题出在哪里?

2 个答案:

答案 0 :(得分:0)

这是因为您将透明图像复制到黑色图像上。您对aplhablending的错误设置仅适用于原始图像,因此当您复制新图像时,会打开aplha混合。
您的代码只需要一点改进:

$transparent = imagecolorallocatealpha($dst, 0,0,0,127);  //Transparent background color
imagealphablending($dst,false);            //Not to compound transparent colors with opaque
imagesavealpha($dst,true);                 //Allow transparency
imagefilledrectangle($dst, 0, 0, imagesx($dst), imagesy($dst), $transparent);   //Give the destination image transparent background
//Now you can copy

或者只是

imagealphablending($dst,false);   //I'm not 100% sure this will make it, but its worth a try

答案 1 :(得分:0)

imagecolorallocate($ SRC,0,0,0);

该行看起来像是从源获取图像,然后使用000背景。哪个是黑色的。只是一个猜测,不熟悉函数