[英]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.