给图片加水印实现方法如下:
1 class Mark 2 { 3 public function __construct() 4 { 5 6 } 7 8 /** 9 * 加水印 10 * @param file $srcImg 要加水印的图片 11 * @param file $waterImg 水印图片 12 * @param integer $position 水印图片放置位置 1:左上,2:右上,3:居中,4:左下,5:右下 13 * @param integer $alpha 水印图片透明度 0-100 14 * @return resource 返回加水印后的图像资源 15 */ 16 public function waterMark($srcImg, $waterImg, $position=5, $alpha) 17 { 18 /** 19 * 获取原图及水印图的宽高值(px) 20 * @var [type] 21 */ 22 $srcImgInfo = @getimagesize($srcImg); 23 if(!$srcImgInfo) return FALSE; 24 $srcW = $srcImgInfo[0]; 25 $srcH = $srcImgInfo[1]; 26 27 $waterInfo = @getimagesize($waterImg); 28 if (!$waterInfo)return FALSE;//水印图片不存在或路径错误 29 $waterW = $waterInfo[0];//宽度 30 $waterH = $waterInfo[1];//高度 31 32 33 /** 34 * 生成图像资源 35 * @var [type] 36 */ 37 $srcImgObj = $this->imageCreateFromExt($srcImg); 38 if (!$srcImgObj) return FALSE; 39 40 $waterImgObj = $this->imageCreateFromExt($waterImg); 41 if (!$waterImgObj) return FALSE; 42 //计算水印的位置 43 switch ($position) 44 { 45 //1顶部居左 46 case 1: 47 $srcX = $srcY = 0; 48 break; 49 //2顶部居右 50 case 2: 51 $srcX = $srcW - $waterW; 52 $srcY = 0; 53 break; 54 //3居中 55 case 3: 56 $srcX = ($srcW -$waterW)/2; 57 $srcY = ($srcH -$waterH)/2; 58 break; 59 //4底部居左 60 case 4: 61 $srcX = 0; 62 $srcY = $srcH -$waterH; 63 break; 64 //5底部居右 65 case 5: 66 $srcX = $srcW - $waterW; 67 $srcY = $srcH - $waterH; 68 break; 69 default: 70 $srcX = $srcY = 0; 71 } 72 //合并原图和水印图片 73 imagecopymerge($srcImgObj, $waterImgObj, $srcX, $srcY, 0, 0, $waterW, $waterH, $alpha); 74 imagedestroy($waterImgObj);//关闭水印图像资源 75 //返回合并后的图像资源,外部得到图像资源后可直接输出到浏览器也可保存成图片文件 76 return $srcImgObj; 77 } 78 79 /** 80 * 根据提供的原图格式创建新图像资源 81 * @param file $imgfile 82 * @return Ambigous <NULL, resource> 83 */ 84 private function imageCreateFromExt($imgfile) 85 { 86 //获取图片的格式;格式:1、gif,2、jpg,3、png 87 $imageType = getimagesize($imgfile)[2]; 88 $im = null; 89 switch ($imageType) { 90 case 1: 91 $im = imagecreatefromgif($imgfile); 92 break; 93 case 2: 94 $im = imagecreatefromjpeg($imgfile); 95 break; 96 case 3: 97 $im = imagecreatefrompng($imgfile); 98 break; 99 default: 100 $im = imagecreatefrompng($imgfile); 101 } 102 return $im; 103 } 104 }