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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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
基于mysql的bbs设计(二)
2006/10/09 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
Javascript string 扩展库代码
2010/04/09 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
php 修改密码实现代码
2017/05/24 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
Django中使用group_by的方法
2015/05/26 Python
python实现烟花小程序
2019/01/30 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
pytorch 常用线性函数详解
2020/01/15 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
Python如何实现远程方法调用
2020/08/07 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
毕业生怎样写好自荐信
2013/11/11 职场文书
护理个人求职信范文
2014/01/08 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS