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 相关文章推荐
自动跳转中英文页面
Oct 09 PHP
PHP脚本的10个技巧(3)
Oct 09 PHP
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
默默简单的写了一个模板引擎
Jan 02 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
在PHP中设置、使用、删除Cookie的解决方法
May 06 PHP
php中in_array函数用法分析
Nov 15 PHP
php操作MongoDB类实例
Jun 17 PHP
微信支付开发告警通知实例
Jul 12 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 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不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
Python文件及目录操作实例详解
2015/06/04 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
keras:model.compile损失函数的用法
2020/07/01 Python
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
一套C#面试题
2013/10/09 面试题
大学生职业生涯设计书
2014/01/02 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
go开发alertmanger实现钉钉报警
2021/07/16 Golang