在调整黑色背景时调整PNG透明度

时间:2011-10-18 11:54:20

标签: php png transparency image-manipulation gd

我有一个处理图像处理的小类。

我使用以下来调整图像大小

$this->image = imagecreatefrompng($filename);
....
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
...
$this->image = $new_image; 
imagepng($this->image,$filename)) { return true; }

但调整后的图像不是保持透明度,而是黑色即将来临,我怎样才能保持透明度。

更新

之后,使用@ Manuel的代码,黑色部分减少了,但仍然存在黑色背景。源图像和生成的图像是

来源&子对应

main http://www.freeimagehosting.net/newuploads/820a0.png sub http://www.freeimagehosting.net/newuploads/30526.png

2 个答案:

答案 0 :(得分:3)

5月8日发布的imagecopyresampled手册页上的最新评论告诉您如何执行此操作。

imagecolortransparent($new_image, imagecolorallocatealpha($new_image, 0, 0, 0, 127));
imagealphablending($new_image, false);
imagesavealpha($new_image, true);

在创建$new_image之后立即放置。

答案 1 :(得分:1)

imagecopyresampled(...)

之前添加此内容
// preserve transparency
imagecolortransparent($new_image , imagecolorallocatealpha($new_image , 0, 0, 0, 127));
imagealphablending($new_image , false);
imagesavealpha($new_image , true);