我正在尝试创建透明图像画布,然后将其他随机图像放在此画布的顶部。然后我最终将最终图像保存为gif
。我尝试过以下方法:
$canvas = imagecreatetruecolor($this->canvas_width, $this->canvas_height);
imagesavealpha($canvas, true);
imagealphablending($canvas, false);
$trans_colour = imagecolorallocatealpha($canvas, 0, 0, 0, 127);
imagefill($canvas, 0, 0, $trans_colour);
但是,如果画布上留有一些未使用的空间,则此部分为黑色。我认为这个区域应该是透明的吗?
我是否正确使用透明度?
答案 0 :(得分:3)
imagesavealpha
无法用于您最终打算另存为GIF的图片,因为GIF图片没有Alpha通道。来自文档:
imagesavealpha - 设置标志以保存完整的Alpha通道 保存PNG时的信息(与单色透明度相反) 图像
因此,只有在将图像保存为PNG时才有效。 GIF图像可以实现透明度,但不能使用Alpha通道;通过将特定颜色定义为透明,它们只能是“透明的”或“不透明的”。在PHP中,您可以使用imagecolortransparent执行此操作。例如,要使所有黑色透明,您可以这样做:
$black_color = imagecolorallocate($canvas, 0, 0, 0);
imagecolortransparent($canvas, $black_color);