/**
* PHP图片添加水印
* @param $img_path 图片的路径
* @param $position 水印的位置,默认右下角,1居中,2左上,3右下,4左下,5右下
* @return $flag 是否输出在浏览器,默认保存文件
*/
function creatWaterMark($img_path,$position='',$flag=false){
if(empty(@file_get_contents($img_path))){
return false;
}
// $img_path = '20171225161906.png';//300*500
$logo_path = 'logo.png';//100*30
//图片大小
$img_pathWH = getimagesize($img_path);
$logo_pathWH = getimagesize($logo_path);
switch ($position){
case 1:
//水印居中
$sWH = $img_pathWH[0]/2-$logo_pathWH[0]/2;
$eHW = $img_pathWH[1]/2-$logo_pathWH[1]/2;
break;
case 2:
//水印在左上角
$sWH = 30;
$eHW = 20;
break;
case 3:
//水印在右上角
$sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
$eHW = 20;
break;
case 4:
//水印在左下角
$sWH = 30;
$eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
break;
case 5:
//水印在右下角
$sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
$eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
break;
default:
//水印在右下角
$sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
$eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
break;
}
//创建图片的实例
$dst_img = imagecreatefromstring(file_get_contents($img_path));
// var_dump($img_pathWH,$logo_pathWH);die;
$src_logo = imagecreatefromstring(file_get_contents($logo_path));
//获取水印图片的宽高
list($src_logo_w, $src_logo_h) = getimagesize($logo_path);
//将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
imagecopymerge($dst_img, $src_logo, $sWH, $eHW, 0, 0, $src_logo_w, $src_logo_h, 50);
//如果水印图片本身带透明色,则使用imagecopy方法
//imagecopy($dst_img, $src_logo, 10, 10, 0, 0, $src_logo_w, $src_logo_h);
//输出图片
list($dst_img_w, $dst_img_h, $dst_img_type) = getimagesize($img_path);
switch ($dst_img_type) {
case 1://GIF
if($flag){
header('Content-Type: image/gif');
imagegif($dst_img); //这里是直接输出到浏览器
return false;
}
imagegif($dst_img,$img_path);//这个是保存加好水印的图片
break;
case 2://JPG
if($flag){
header('Content-Type: image/jpeg');
imagejpeg($dst_img); //这里是直接输出到浏览器
return false;
}
imagejpeg($dst_img,$img_path);//这个是保存加好水印的图片
break;
case 3://PNG
if($flag){
header('Content-Type: image/png');
imagepng($dst_img); //这里是直接输出到浏览器
return false;
}
imagepng($dst_img,$img_path);//这个是保存加好水印的图片
break;
default:
break;
}
imagedestroy($dst_img);
imagedestroy($src_logo);
}