【发布时间】:2015-04-17 21:39:20
【问题描述】:
我在渲染 png 上有这个代码(简化):
$this->image = imagecreatefrompng($this->file);
header("Content-Type: {$this->imageInfo['mime']}");
imagepng($this->image);
在我得到黑色背景后,我寻找了一些解决方案,但没有奏效。更简单的一个:
$this->image = imagecreatefrompng($this->file);
imagealphablending($targetImage, false);
imagesavealpha($targetImage, true);
header("Content-Type: {$this->imageInfo['mime']}");
imagepng($this->image);exit();
人们声称它有效,但我仍然有黑色背景,所以我尝试了其他的:
$this->image = imagecreatefrompng($this->file);
$targetImage = imagecreatetruecolor($this->imageInfo[0], $this->imageInfo[1]);
imagealphablending($targetImage, false);
$color = imagecolorallocatealpha($targetImage, 0, 0, 0, 127);
imagefill($targetImage, 0, 0, $color);
imagecolortransparent($targetImage, $color);
imagesavealpha($targetImage, true);
imagecopyresampled($targetImage, $this->image, 0, 0, 0, 0, $this->imageInfo[0], $this->imageInfo[1], $this->imageInfo[0], $this->imageInfo[1]);
header("Content-Type: {$this->imageInfo['mime']}");
imagepng($this->image);exit();
结果在所有现代浏览器中都是相同的。这怎么可能,有什么想法吗? 代码是适用于所有类型图像的类的一部分,并且所有功能都可以正常工作。
【问题讨论】:
标签: php png transparency php-gd