PHP处理图片合成水印出现色块

编辑

今天用php脚本将没加水印的图片加水印的时候发现一个问题,用imagecopy时有些压缩的PNG图片加水印的时候会出现色块,然后google找了一下,有些说把imagecopymerge换成imagecopy,我....。还有一些做法是创建图片,填充颜色,然后将填充的颜色转为透明,这种做法跟外面圈了一圈马赛克一样,很不好看。

原代码:

$bgimg = imagecreatefrompng('bg.png');
$logoimg = imagecreatefrompng("logo.png");
$bginfo = getimagesize($uploadurl);
$logoinfo = getimagesize('logo_b.png');
imagecopy($bgimg,$logoimg,$bginfo[0]-$logoinfo[0]-40,$bginfo[1]-$logoinfo[1]-30,0,0,$logoinfo[0],$logoinfo[1]);
imagepng($bgimg,"newbg.png");

效果:

后面研究发现,只要新建一个画布,先复制到新画布,再把水印复制上去就可以了。

<?php
$bgimg = imagecreatefrompng('bg.png');
$logoimg = imagecreatefrompng("logo.png");
$bginfo = getimagesize($uploadurl);
$logoinfo = getimagesize('logo_b.png');

$newimg= imagecreatetruecolor($bginfo[0],$bginfo[1]);
imagecopy($newimg,$bgimg,0,0,0,0,$bginfo[0],$bginfo[1]);
imagecopy($newimg,$logimg,$bginfo[0]-$logoinfo[0]-40,$bginfo[1]-$logoinfo[1]-30,0,0,$logoinfo[0],$logoinfo[1]);
imagepng($bgimg,"newbg.png");

效果图:

本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!

评论区

暂无评论,快来抢沙发