首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP和GD: PNG-24透明度问题

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

Stack Overflow用户
提问于 2011-04-07 04:22:16
回答 1查看 2.7K关注 0票数 4

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

代码:

代码语言:javascript
复制
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);  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-07 04:34:43

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

请查看此链接以了解我的意思:http://www.deepbluesky.com/blog/-/the-difference-between-png24-and-png32_49/

作为附注,程序中的这行代码什么也不做,因为$image在下一行被重击:

代码语言:javascript
复制
$image = imagecreatetruecolor($watermark_width, $watermark_height);  
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5572481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档