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 相关文章推荐
利用PHP实现与ASP Banner组件相似的类
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
May 29 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
php ajax实现文件上传进度条
Mar 29 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
laravel与thinkphp之间的区别与优缺点
Mar 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
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
详解redux异步操作实践
2018/08/15 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
python3获取当前目录的实现方法
2019/07/29 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
python实现从ftp服务器下载文件
2020/03/03 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
摄影实习自我鉴定
2013/09/20 职场文书
最新个人职业生涯规划书
2014/01/22 职场文书
护士的自我鉴定
2014/02/07 职场文书
公益广告语集锦
2014/03/13 职场文书
新品发布会主持词
2014/04/02 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
初三语文教学计划
2015/01/22 职场文书
毕业典礼邀请函
2015/01/31 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书