我有一个处理图像处理的小类。
我使用以下来调整图像大小
$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
答案 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);