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的header和asp中的redirect比较
Oct 09 PHP
PHP中实现汉字转区位码应用源码实例解析
Jun 14 PHP
PHP中改变图片的尺寸大小的代码
Jul 17 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
php文件读取方法实例分析
Jun 20 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 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读取flv文件的播放时间长度
2009/09/03 PHP
PHP 文件上传全攻略
2010/04/28 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
浅析Python装饰器以及装饰器模式
2018/05/28 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Pygame的程序开始示例代码
2020/05/07 Python
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
学前教育毕业生自荐信范文
2013/12/24 职场文书
创业计划书如何吸引他人眼球
2014/01/10 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
指导教师评语
2014/04/26 职场文书
营销学习心得体会
2014/09/12 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
学校运动会感想
2015/08/10 职场文书
2019 入党申请书范文
2019/07/10 职场文书
python执行js代码的方法
2021/05/13 Python
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS