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");

效果图:

生成海报
none

发表评论

0条评论

设置
配色方案

布局

现在购买