gpt4 book ai didi

PHP 和 GD : PNG-24 transparency problem

转载 作者:可可西里 更新时间:2023-10-31 23:10:42 25 4
gpt4 key购买 nike

我有这段代码可以在照片上放置透明的 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);  

关于PHP 和 GD : PNG-24 transparency problem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com