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树的代码,可以嵌套任意层
Oct 09 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 PHP
php实现redis数据库指定库号迁移的方法
Jan 14 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
php实现数字补零的方法总结
Sep 12 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 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
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
解决yum对python依赖版本问题
2019/07/05 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
艺术用品:Arteza
2018/11/25 全球购物
临床护士自荐信
2014/01/31 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
新闻编辑求职信
2014/04/09 职场文书
服装设计专业求职信
2014/06/16 职场文书
学用政策心得体会
2014/09/10 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android
Python超详细分步解析随机漫步
2022/03/17 Python
解决xampp安装后Apache无法启动
2022/03/21 Servers