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 代码优化的42条建议 推荐
Sep 25 PHP
PHP编码规范之注释和文件结构说明
Jul 09 PHP
深入Memcache的Session数据的多服务器共享详解
Jun 13 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
PHP在线打包下载功能示例
Oct 15 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
PHP后期静态绑定之self::限制实例分析
Dec 21 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 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函数 serialize()和unserialize()
2012/02/04 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
JS实现小星星特效
2019/12/24 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
Python短信轰炸的代码
2020/03/25 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
Python如何定义一个函数
2015/09/01 面试题
师范学院毕业生求职信范文
2013/12/26 职场文书
网络维护中文求职信
2014/01/03 职场文书
颁奖典礼主持词
2014/03/25 职场文书
企业安全生产标语
2014/06/06 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书