PHP图片加水印实现方法


Posted in PHP onMay 06, 2016

本文实例讲述了PHP图片加水印实现方法。分享给大家供大家参考,具体如下:

<?php
echo img_water_mark("2008112023204423477802.gif", "copyImg.png", $savepath=null, $savename="123.gif", $positon=2, $alpha=60);
/**
 * 图片加水印(适用于png/jpg/gif格式)
 * 
 * @author flynetcn
 *
 * @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:加水印后的新图片保存失败
 */
function img_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顶部居左
  case 1: $x=$y=0; break;
  //2顶部居右
  case 2: $x = $srcinfo[0]-$waterinfo[0]; $y = 0; break;
  //3居中
  case 3: $x = ($srcinfo[0]-$waterinfo[0])/2; $y = ($srcinfo[1]-$waterinfo[1])/2; break;
  //4底部居左
  case 4: $x = 0; $y = $srcinfo[1]-$waterinfo[1]; break;
  //5底部居右
  case 5: $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]) {
  case 1: imagegif($srcImgObj, $savefile); break;
  case 2: imagejpeg($srcImgObj, $savefile); break;
  case 3: imagepng($srcImgObj, $savefile); break;
  default: return -5; //保存失败
  }
  imagedestroy($srcImgObj);
  imagedestroy($waterImgObj);
  return $savefile;
}
function image_create_from_ext($imgfile)
{
  $info = getimagesize($imgfile);
  $im = null;
  switch ($info[2]) {
  case 1: $im=imagecreatefromgif($imgfile); break;
  case 2: $im=imagecreatefromjpeg($imgfile); break;
  case 3: $im=imagecreatefrompng($imgfile); break;
  }
  return $im;
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP XML备份Mysql数据库
May 27 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
php eval函数用法总结
Oct 31 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
PHP计算近1年的所有月份
Mar 13 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
php数组冒泡排序算法实例
May 06 #PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 #PHP
[原创]PHP字符串中插入子字符串方法总结
May 06 #PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 #PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 #PHP
zen_cart实现支付前生成订单的方法
May 06 #PHP
学习PHP的数组总结【经验】
May 05 #PHP
You might like
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
php操作xml
2013/10/27 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
php实现mysql封装类示例
2014/05/07 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
医院总经理职责
2013/12/26 职场文书
写给老师的表扬信
2014/01/21 职场文书
劳动实践课感言
2014/02/01 职场文书
数学系毕业生求职信
2014/05/29 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
暂停营业通知
2015/04/25 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript