ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整


Posted in PHP onNovember 05, 2014

本文实例讲述了ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整的方法。分享给大家供大家参考。具体实现方法如下:

TP自带有图片类,有给图片加水印的功能。
这里完善了:
1. png水印透明
2. 加水印后质量调整(只限于JPG格式)
代码如下:

/**

+———————————————————-

* 为图片添加水印

+———————————————————-

* @static public

+———————————————————-

* @param string $source 原文件名

* @param string $water 水印图片

* @param string $$savename 添加水印后的图片名

* @param string $alpha 水印的透明度

+———————————————————-

* @return string

+———————————————————-

* @throws ThinkExecption

+———————————————————-

*/

static public function water($source, $water, $savename=null, $alpha=80) {

//检查文件是否存在

if (!file_exists($source) || !file_exists($water))

return false;
//图片信息

$sInfo = self::getImageInfo($source);

$wInfo = self::getImageInfo($water);
//如果图片小于水印图片,不生成图片

if ($sInfo["width"] < $wInfo["width"] || $sInfo['height'] < $wInfo['height'])

return false;
//建立图像

$sCreateFun = "imagecreatefrom" . $sInfo['type'];

$sImage = $sCreateFun($source);

$wCreateFun = "imagecreatefrom" . $wInfo['type'];

$wImage = $wCreateFun($water);
//设定图像的混色模式

imagealphablending($wImage, true);
//图像位置,默认为右下角右对齐

$posY = $sInfo["height"] ? $wInfo["height"];

$posX = $sInfo["width"] ? $wInfo["width"];
/* 为了保持PNG的透明效果 使用imagecopy 此处为修改过的*/

imagecopy($sImage, $wImage, $posX, $posY, 0, 0, $wInfo['width'], $wInfo['height']);

//生成混合图像,这是系统的

// imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo['width'],$wInfo['height'], $alpha);

//输出图像

$ImageFun = 'Image' . $sInfo['type'];

//如果没有给出保存文件名,默认为原图像名

if (!$savename) {

$savename = $source;

@unlink($source);

}

//保存图像,如果是jpg,则设置一下水印质量 此处为修改过的:

if ($sInfo['type'] == "jpg" || $sInfo['type'] == "jpeg") {

imagejpeg($sImage, $savename, 90);//第3个参数即使质量大小,因为只有imagejpeg支持这个参数

} else {

$ImageFun($sImage, $savename);

}

//$ImageFun($sImage, $savename);//这是系统的

imagedestroy($sImage);

}

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
前端必学之PHP语法基础
Jan 01 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
php中的登陆login实例代码
Jun 20 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 PHP
phpnow php探针环境检测代码
Nov 04 #PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 #PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 #PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 #PHP
PHP自动重命名文件实现方法
Nov 04 #PHP
php以post形式发送xml的方法
Nov 04 #PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 #PHP
You might like
PHP4实际应用经验篇(5)
2006/10/09 PHP
php文档更新介绍
2011/07/22 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python批量发送post请求的实现代码
2018/05/05 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
电话销售经理岗位职责
2013/12/07 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
经济管理自荐书
2014/06/09 职场文书
导游词欢迎词
2015/02/02 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript