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