/**
* 图片合成
* */
function composeImg($bigImgPath,$qCodePath,$dst_x,$dst_y){
$bigImg = imagecreatefromstring(file_get_contents($bigImgPath));
$qCodeImg = imagecreatefromstring(file_get_contents($qCodePath));
imagesavealpha($bigImg,true);//假如是透明PNG图片,这里很重要 意思是不要丢了图像的透明<code class=”php spaces hljs”></code>
list($qCodeWidth, $qCodeHight, $qCodeType) = getimagesize($qCodePath);
// imagecopymerge使用注解
imagecopymerge($bigImg, $qCodeImg, $dst_x, $dst_y, 0, 0, $qCodeWidth, $qCodeHight, 100);
list($bigWidth, $bigHight, $bigType) = getimagesize($bigImgPath);
switch ($bigType) {
case 1: //gif
imagegif($bigImg,$bigImgPath);
break;
case 2: //jpg
imagejpeg($bigImg,$bigImgPath);
break;
case 3: //jpg
imagepng($bigImg,$bigImgPath); //在 images 目录下就会生成一个 circle.png 文件,上面也可设置相应的保存目录及文件名。
break;
default:
# code…
break;
}
imagedestroy($bigImg);
imagedestroy($qCodeImg);
}
/*背景合成*/
//$back_img http链接
//$wx_code http链接
$dir_root = ‘./uploads/uid2’;
$first_dir = ‘wechatcode/recruit_agent’;
USER_ID = 1;
$image_1 = imagecreatefrompng($back_img);
$img_type = getimagesize ($wx_code)[‘mime’];
if($img_type==’image/png’){
$image_2 = imagecreatefrompng($wx_code);
}else{
$image_2 = imagecreatefromjpeg($wx_code);
}
//合成图片
//imagecopymerge ($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,x$src_w,$src_h,$pct)—拷贝并合并图像的一部分
//将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
imagecopymerge($image_1, $image_2, 206, 463, 0, 0, imagesx($image_2),
imagesy($image_2), 100);
// 输出合成图片
//imagepng($image[,$filename]) — 以 PNG 格式将图像输出到浏览器或文件
if(!file_exists($dir_root.’/’.$first_dir.’/’.USER_ID.’.png’)){
createFile($dir_root.’/’.$first_dir.’/’.USER_ID.’.png’);
}
imagepng($image_1,$dir_root.’/’.$first_dir.’/’.USER_ID.’.png’);