php实现图片添加水印功能


Posted in PHP onFebruary 13, 2014
<?php
/**
 * 图片加水印(适用于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 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
php的curl实现get和post的代码
Aug 23 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
php教程之phpize使用方法
Feb 12 #PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 #PHP
php-fpm配置详解
Feb 12 #PHP
PHP添加Xdebug扩展的方法
Feb 12 #PHP
php和jquery实现地图区域数据统计展示数据示例
Feb 12 #PHP
php中的路径问题与set_include_path使用介绍
Feb 11 #PHP
php 不使用js实现页面跳转
Feb 11 #PHP
You might like
用PHP将数据导入到Foxmail
2006/10/09 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
php目录操作实例代码
2014/02/21 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
python实现网站的模拟登录
2016/01/04 Python
python进行两个表格对比的方法
2018/06/27 Python
python3.6的venv模块使用详解
2018/08/01 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
Unix如何添加新的用户
2014/08/20 面试题
造型师求职自荐信
2013/09/27 职场文书
总裁秘书岗位职责
2013/12/04 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
毕业留言寄语大全
2014/04/10 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
运动会广播稿200字
2014/10/18 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书