繁体   English   中英

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

[英]PHP and GD: PNG-24 transparency problem

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

码:

header('content-type: image/jpeg');  

$watermark = imagecreatefrompng('wm1.png');  
$watermark_width = imagesx($watermark);  
$watermark_height = imagesy($watermark); 

imagealphablending($watermark, true);
imagesavealpha($watermark, true);
$image = imagecreatetruecolor($watermark_width, $watermark_height);  

$image = imagecreatefromjpeg('image1.jpg');  
$size = getimagesize('image1.jpg');  
$dest_x = $size[0] - $watermark_width - 5;  
$dest_y = $size[1] - $watermark_height - 5;  


imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);  
imagejpeg($image, null, 95);  
imagedestroy($image);  
imagedestroy($watermark);  

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

看看这个链接,看看我的意思: http//www.deepbluesky.com/blog/-/the-difference-between-png24-and-png32_49/

作为旁注,你的程序中的这行代码没有任何作用,因为$image在下一行被破坏了:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM