/** * 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); }