PHP图片添加水印功能示例小结
本文实例总结了PHP图片添加水印功能。分享给大家供大家参考,具体如下:
例1、很简单图下添加水印函数
<?php /** *追加水印 * *@paramstring$source_img原始图片url *@paramstring$water_map水印图片url */ functionaddWaterMap($source_img,$water_map) { $img=imagecreatefromjpeg($source_img);//读取原图 $img_x=imagesx($img);//原图宽 $img_y=imagesy($img);//原图高 imagealphablending($img,true);//设置为混合填色模式 //$img_water_map=imagecreatefromjpeg($water_map);//读取水印图片 $img_water_map=imagecreatefrompng($water_map); $water_x=imagesx($img_water_map);//水印宽 $water_y=imagesy($img_water_map);//水印高 $wimg_x=$img_x-$water_x-10;//水印x坐标 $wimg_y=$img_y-$water_y-10;//水印y坐标 imagecopy($img,$img_water_map,$wimg_x,$wimg_y,0,0,$water_x,$water_y);//分别为原图,水印,水印x坐标,水印y坐标,水印图片横轴开始点,水印图片纵轴开始点,水印横轴结束,水印纵轴结束 imagejpeg($img,$source_img,95);//输出到目标文件 imagedestroy($img);//销毁内存数据流 imagedestroy($img_water_map);//销毁内存数据流 returntrue; } ?>
实例2、一个比较完整图片增加水印类
<?php /** *图片加水印(适用于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基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。