<?php<BR>/**<BR> * 图片加水印(适用于png/jpg/gif格式)<BR> * <BR> * @author flynetcn<BR> *<BR> * @param $srcImg 原图片<BR> * @param $waterImg 水印图片<BR> * @param $savepath 保存路径<BR> * @param $savename 保存名字<BR> * @param $positon 水印位置 <BR> * 1:顶部居左, 2:顶部居右, 3:居中, 4:底部局左, 5:底部居右 <BR> * @param $alpha 透明度 -- 0:完全透明, 100:完全不透明<BR> * <BR> * @return 成功 -- 加水印后的新图片地址<BR> * 失败 -- -1:原文件不存在, -2:水印图片不存在, -3:原文件图像对象建立失败<BR> * -4:水印文件图像对象建立失败 -5:加水印后的新图片保存失败<BR> */<BR>function img_water_mark($srcImg, $waterImg, $savepath=null, $savename=null, $positon=5, $alpha=30)<BR>{<BR> $temp = pathinfo($srcImg);<BR> $name = $temp['basename'];<BR> $path = $temp['dirname'];<BR> $exte = $temp['extension'];<BR> $savename = $savename ? $savename : $name;<BR> $savepath = $savepath ? $savepath : $path;<BR> $savefile = $savepath .'/'. $savename;<BR> $srcinfo = @getimagesize($srcImg);<BR> if (!$srcinfo) {<BR> return -1; //原文件不存在<BR> }<BR> $waterinfo = @getimagesize($waterImg);<BR> if (!$waterinfo) {<BR> return -2; //水印图片不存在<BR> }<BR> $srcImgObj = image_create_from_ext($srcImg);<BR> if (!$srcImgObj) {<BR> return -3; //原文件图像对象建立失败<BR> }<BR> $waterImgObj = image_create_from_ext($waterImg);<BR> if (!$waterImgObj) {<BR> return -4; //水印文件图像对象建立失败<BR> }<BR> switch ($positon) {<BR> //1顶部居左<BR> case 1: $x=$y=0; break;<BR> //2顶部居右<BR> case 2: $x = $srcinfo[0]-$waterinfo[0]; $y = 0; break;<BR> //3居中<BR> case 3: $x = ($srcinfo[0]-$waterinfo[0])/2; $y = ($srcinfo[1]-$waterinfo[1])/2; break;<BR> //4底部居左<BR> case 4: $x = 0; $y = $srcinfo[1]-$waterinfo[1]; break;<BR> //5底部居右<BR> case 5: $x = $srcinfo[0]-$waterinfo[0]; $y = $srcinfo[1]-$waterinfo[1]; break;<BR> default: $x=$y=0;<BR> }<BR> imagecopymerge($srcImgObj, $<div style="color:transparent">!本文来源gaodai.ma#com搞##代!^码网(</div><sup>搞gaodaima代码</sup>waterImgObj, $x, $y, 0, 0, $waterinfo[0], $waterinfo[1], $alpha);<BR> switch ($srcinfo[2]) {<BR> case 1: imagegif($srcImgObj, $savefile); break;<BR> case 2: imagejpeg($srcImgObj, $savefile); break;<BR> case 3: imagepng($srcImgObj, $savefile); break;<BR> default: return -5; //保存失败<BR> }<BR> imagedestroy($srcImgObj);<BR> imagedestroy($waterImgObj);<BR> return $savefile;<BR>}</P><P><BR>function image_create_from_ext($imgfile)<BR>{<BR> $info = getimagesize($imgfile);<BR> $im = null;<BR> switch ($info[2]) {<BR> case 1: $im=imagecreatefromgif($imgfile); break;<BR> case 2: $im=imagecreatefromjpeg($imgfile); break;<BR> case 3: $im=imagecreatefrompng($imgfile); break;<BR> }<BR> return $im;<BR>}<BR>