thinkPHP框架实现图像裁剪、缩放、加水印的方法


Posted in PHP onMarch 14, 2017

本文实例讲述了thinkPHP框架实现图像裁剪、缩放、加水印的方法。分享给大家供大家参考,具体如下:

ThinkPHP 图片处理函数,需要文字水印字体,可在windows下 控制面板 > 大图标(右上角) > 字体 找到需要的字体

/**
* 图像的裁剪、缩放、加水印
* @param string $path    路径
* @param int $width   裁剪的宽度/限制的高度或宽度,当有$height值时此值为图片的宽度,否则为限制的宽度或高度
* @param int $height   [可选]裁剪的高度
* @param boolean $water   [可选]是否加水印
* @param int $word    [可选]水印文字
*/
function zoom_image($path,$width = 300,$height = null,$water = null,$word = 'water'){
  $image = new \Think\Image();
  $image->open($path);
  $imgWidth = $image->width();
  $imgHeight = $image->height();
  // 限制尺寸
  if($width and !$height){
    $maxSize = $width;
    // 宽度或高度大于规定尺寸时
    if($imgWidth > $maxSize or $imgHeight > $maxSize){
      $size = image_min_width($imgWidth,$imgHeight,$maxSize);
      $image->thumb($size['width'], $size['height']);
      $do = true;
      $dowater = true;
    }
  // 裁剪固定尺寸
  }else if($width and $height){
    $size = image_min_width($imgWidth,$imgHeight,$width);
    $image->thumb($size['width'], $size['height'])->crop($width, $height);
    $do = true;
    $dowater = true;
  }
  if($dowater and $water and $word){
    $image->text($word,'./Public/images/arial.ttf',20,'#dddddd', \Think\Image::IMAGE_WATER_SOUTHEAST,-10);
  }
  // 未操作则不保存
  if($do){
    $image->save($path);
  }
}
PHP 相关文章推荐
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
7个鲜为人知却非常实用的PHP函数
Jul 01 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
Laravel validate error处理,ajax,json示例
Oct 25 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 #PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 #PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 #PHP
Yii2下点击验证码的切换实例代码
Mar 14 #PHP
php分页查询的简单实现代码
Mar 14 #PHP
php实现购物车产品删除功能(2)
Jul 23 #PHP
php实现产品加入购物车功能(1)
Jul 23 #PHP
You might like
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
python利用装饰器进行运算的实例分析
2015/08/04 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
Python实现数值积分方式
2019/11/20 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
电气自动化自荐信
2013/10/10 职场文书
地理科学专业毕业生求职信
2013/10/15 职场文书
临床医师个人自我评价
2014/04/06 职场文书
写得不错的求职信范文
2014/07/11 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
健康状况证明书
2014/11/26 职场文书
六一活动主持词
2015/06/30 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android