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的中问验证码
Nov 25 PHP
php 数学运算验证码实现代码
Oct 11 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 PHP
php HandlerSocket的使用
May 02 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 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加入动态flash文件的生成的支持
2006/10/09 PHP
php的控制语句
2006/10/09 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
php生成随机颜色的方法
2014/11/13 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
Javascript的比较汇总
2016/07/25 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
Python绘制股票移动均线的实例
2019/08/24 Python
python 实现屏幕录制示例
2019/12/23 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
python实现批量命名照片
2020/06/18 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
创建服务型党组织实施方案
2014/02/25 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
施工安全责任书
2014/04/14 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
如何通过cmd 连接阿里云服务器
2022/04/18 Servers