PHP和GD:PNG-24透明度问题

PHP和GD:PNG-24透明度问题,php,gd,Php,Gd,我有这个代码放置一个透明的PNG图像水印的照片。只要水印img是PNG-8,它就可以正常工作(但使用抗锯齿图像时看起来很难看)。如果我使用PNG-24,水印图像看起来很好,但会失去透明度。有办法解决吗?谢谢 代码: PNG 24没有透明层,它只有代表红、绿和蓝的3个字节。如果可能的话,您应该使用PNG 32,因为它有您想要的alpha层 查看此链接了解我的意思: 作为旁注,程序中的这一行代码不起任何作用,因为$image在下一行被删除: $image = imagecreatetruecolor

我有这个代码放置一个透明的PNG图像水印的照片。只要水印img是PNG-8,它就可以正常工作(但使用抗锯齿图像时看起来很难看)。如果我使用PNG-24,水印图像看起来很好,但会失去透明度。有办法解决吗?谢谢

代码:


PNG 24没有透明层,它只有代表红、绿和蓝的3个字节。如果可能的话,您应该使用PNG 32,因为它有您想要的alpha层

查看此链接了解我的意思:

作为旁注,程序中的这一行代码不起任何作用,因为
$image
在下一行被删除:

$image = imagecreatetruecolor($watermark_width, $watermark_height);  

我在这篇文章上加了星星,等我回家后再看。我以前使用过
gd
,也有这个问题。我修复了它,但我必须检查脚本,记不起是怎么做的恰好在imagecreatefromjpeg之后是冗余的。getimagesize不使用GD,因此它会再次加载图像,再次解析图像,等等。。。使用imagesx()和imagesy()获取本机GD大小信息。@ohmusama:该行确实起作用。它会泄漏内存和资源,因为在脚本执行结束之前图像资源不会关闭…:-DVery true,因为在分配下一行代码之前从未调用imagedestroy($image),但给出该语句是为了帮助他从源代码中删除该行代码=P作为旁注,这是导致php脚本内存泄漏的几种方法之一。奇怪地类似于c#
$image = imagecreatetruecolor($watermark_width, $watermark_height);