//合成图片(加水印)
function img_water_mark($srcImg, $waterImg, $savename, $savepath='public/images/wxqrcode', $positon=3, $alpha=100)
{
//$savename=time().'.jpg';
$temp = pathinfo($srcImg);
$name = $temp['basename'];
$path = $temp['dirname'];
$exte = $temp['extension'];
$savename = $savename ? $savename : $name;
$savepath = $savepath ? $savepath : $path;
$savefile = $savepath .'/'. $savename;
$srcinfo = @getimagesize($srcImg);
if (!$srcinfo) {
return -1; //原文件不存在
}
$waterinfo = @getimagesize($waterImg);
if (!$waterinfo) {
return -2; //水印图片不存在
}
$srcImgObj = image_create_from_ext($srcImg);
if (!$srcImgObj) {
return -3; //原文件图像对象建立失败
}
$waterImgObj = image_create_from_ext($waterImg);
if (!$waterImgObj) {
return -4; //水印文件图像对象建立失败
}
switch ($positon) {
//1顶部居左
case 1: $x=$y=0; break;
//2顶部居右
case 2: $x = $srcinfo[0]-$waterinfo[0]; $y = 0; break;
//3居中
case 3: $x = ($srcinfo[0]-$waterinfo[0])/2; $y = ($srcinfo[1]-$waterinfo[1])/2; break;
//4底部居左
case 4: $x = 0; $y = $srcinfo[1]-$waterinfo[1]; break;
//5底部居右
case 5: $x = $srcinfo[0]-$waterinfo[0]; $y = $srcinfo[1]-$waterinfo[1]; break;
default: $x=$y=0;
}
imagecopymerge($srcImgObj, $waterImgObj, $x, $y, 0, 0, $waterinfo[0], $waterinfo[1], $alpha);
switch ($srcinfo[2]) {
case 1: imagegif($srcImgObj, $savefile); break;
case 2: imagejpeg($srcImgObj, $savefile); break;
case 3: imagepng($srcImgObj, $savefile); break;
default: return -5; //保存失败
}
imagedestroy($srcImgObj);
imagedestroy($waterImgObj);
return $savefile;
}
//创建图片
function image_create_from_ext($imgfile)
{
$info = getimagesize($imgfile);
$im = null;
switch ($info[2]) {
case 1: $im=imagecreatefromgif($imgfile); break;
case 2: $im=imagecreatefromjpeg($imgfile); break;
case 3: $im=imagecreatefrompng($imgfile); break;
}
return $im;
}
//创建大小
function imagesize($pathimg){
//图片的等比缩放
//因为PHP只能对资源进行操作,所以要对需要进行缩放的图片进行拷贝,创建为新的资源
$src=imagecreatefromjpeg($pathimg);
//取得源图片的宽度和高度
$size_src=getimagesize($pathimg);
$w=$size_src['0'];
$h=$size_src['1'];
//指定缩放出来的最大的宽度(也有可能是高度)
$max=150;
//根据最大值为300,算出另一个边的长度,得到缩放后的图片宽度和高度
if($w > $h){
$w=$max;
$h=$h*($max/$size_src['0']);
}else{
$h=$max;
$w=$w*($max/$size_src['1']);
}
//声明一个$w宽,$h高的真彩图片资源
$image=imagecreatetruecolor($w, $h);
//关键函数,参数(目标资源,源,目标资源的开始坐标x,y, 源资源的开始坐标x,y,目标资源的宽高w,h,源资源的宽高w,h)
imagecopyresampled($image, $src, 0, 0, 0, 0, $w, $h, $size_src['0'], $size_src['1']);
//告诉浏览器以图片形式解析
// header('content-type:image/png');
// imagepng($image);
$timestamp = time();
imagejpeg($image, "$timestamp.jpg");
//销毁资源
imagedestroy($image);
return $timestamp.'.jpg';
}