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_SELF的安全问题
Sep 05 PHP
PHP __autoload函数(自动载入类文件)的使用方法
Feb 04 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
php实现读取内存顺序号
Mar 29 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
laravel学习教程之关联模型
Jul 30 PHP
php 基础函数
Feb 10 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
PHP中危险的file_put_contents函数详解
Nov 04 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 PHP
laravel实现上传图片并在页面显示的例子
Oct 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
PDO::getAttribute讲解
2019/01/28 PHP
jquery json 实例代码
2010/12/02 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
Python创建模块及模块导入的方法
2015/05/27 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
详解爬虫被封的问题
2019/04/23 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
大学学年自我鉴定
2013/10/28 职场文书
历史系自荐信范文
2013/12/24 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
人力资源作业细则
2014/03/03 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
安全隐患整改报告
2014/11/06 职场文书
个人总结格式范文
2015/03/09 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
python游戏开发Pygame框架
2022/04/22 Python
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server