PHP图片加水印实现方法
本文实例讲述了PHP图片加水印实现方法。分享给大家供大家参考,具体如下:
<?php echoimg_water_mark("2008112023204423477802.gif","copyImg.png",$savepath=null,$savename="123.gif",$positon=2,$alpha=60); /** *图片加水印(适用于png/jpg/gif格式) * *@authorflynetcn * *@param$srcImg原图片 *@param$waterImg水印图片 *@param$savepath保存路径 *@param$savename保存名字 *@param$positon水印位置 *1:顶部居左,2:顶部居右,3:居中,4:底部局左,5:底部居右 *@param$alpha透明度--0:完全透明,100:完全不透明 * *@return成功--加水印后的新图片地址 *失败---1:原文件不存在,-2:水印图片不存在,-3:原文件图像对象建立失败-4:水印文件图像对象建立失败,-5:加水印后的新图片保存失败 */ functionimg_water_mark($srcImg,$waterImg,$savepath=null,$savename=null,$positon=5,$alpha=30) { $temp=pathinfo($srcImg); $name=$temp['basename']; $path=$temp['dirname']; $exte=$temp['extension']; $savename=$savename?$savename:$name; $savepath=$savepath?$savepath:$path; $savefile=$savepath.'/'.$savename; $srcinfo=@getimagesize($srcImg); if(!$srcinfo){ return-1;//原文件不存在 } $waterinfo=@getimagesize($waterImg); if(!$waterinfo){ return-2;//水印图片不存在 } $srcImgObj=image_create_from_ext($srcImg); if(!$srcImgObj){ return-3;//原文件图像对象建立失败 } $waterImgObj=image_create_from_ext($waterImg); if(!$waterImgObj){ return-4;//水印文件图像对象建立失败 } switch($positon){ //1顶部居左 case1:$x=$y=0;break; //2顶部居右 case2:$x=$srcinfo[0]-$waterinfo[0];$y=0;break; //3居中 case3:$x=($srcinfo[0]-$waterinfo[0])/2;$y=($srcinfo[1]-$waterinfo[1])/2;break; //4底部居左 case4:$x=0;$y=$srcinfo[1]-$waterinfo[1];break; //5底部居右 case5:$x=$srcinfo[0]-$waterinfo[0];$y=$srcinfo[1]-$waterinfo[1];break; default:$x=$y=0; } imagecopymerge($srcImgObj,$waterImgObj,$x,$y,0,0,$waterinfo[0],$waterinfo[1],$alpha); switch($srcinfo[2]){ case1:imagegif($srcImgObj,$savefile);break; case2:imagejpeg($srcImgObj,$savefile);break; case3:imagepng($srcImgObj,$savefile);break; default:return-5;//保存失败 } imagedestroy($srcImgObj); imagedestroy($waterImgObj); return$savefile; } functionimage_create_from_ext($imgfile) { $info=getimagesize($imgfile); $im=null; switch($info[2]){ case1:$im=imagecreatefromgif($imgfile);break; case2:$im=imagecreatefromjpeg($imgfile);break; case3:$im=imagecreatefrompng($imgfile);break; } return$im; } ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《PHP数学运算技巧总结》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。