橘子菌
2016-09-14 17:34
如题,那个背景太难看了
其实吧是因为imagecopymerge这个函数搞的鬼,如果用imagecopy函数则不会有这种问题,但是imagecopy不可以调整透明度。
也就是说imagecopymerge会忽略原始图片的透明度,而imagecopy保留了原始图片的透明度。
imagecopymerge可以调整透明度,而imagecopy不可以
那么我既要保留原始图片的透明度又要合成后的logo图片的透明度可以调整,怎么办呢?
有一种方法,就是创建一个画布,分别把背景图片与logo用imagecopy“塞”进一画布里,在把画布放在原始背景图片的上面,调透明度,效果就出来了,光说可能会听着糊涂,我上我写的代码吧。
function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct){ $cut = imagecreatetruecolor($src_w, $src_h); imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h); imagecopy($cut, $src_im,0, 0, $src_x, $src_y, $src_w, $src_h); imagecopymerge($dst_im, $cut, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $opacity); }
希望有所帮助
我也遇到这个问题,不是透明度的原因。和在ps里面合成的效果明显不一样,换成jpg的就不会这样了。
透明度的事儿吧
GD库实现图片水印与缩略图
19006 学习 · 162 问题
相似问题