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 相关文章推荐
PHP print类函数使用总结
Jun 25 PHP
服务器web工具 php环境下
Dec 29 PHP
php下将多个数组合并成一个数组的方法与实例代码
Feb 03 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
PHP中Http协议post请求参数
Nov 02 PHP
WordPress后台中实现图片上传功能的实例讲解
Jan 11 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
Oct 13 PHP
php调用云片网接口发送短信的实现方法
Oct 25 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP abstract 抽象类定义与用法示例
May 29 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
56.com视频采集接口程序(PHP)
2007/09/22 PHP
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
为指定元素增加样式的js代码
2009/12/09 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
使用python画社交网络图实例代码
2019/07/10 Python
Django中提示消息messages的设置方式
2019/11/15 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
构建高效的python requests长连接池详解
2020/05/02 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
《小猫刮胡子》教学反思
2014/02/21 职场文书
北京奥运会主题口号
2014/06/13 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
爱国电影观后感
2015/06/19 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
详解Python为什么不用设计模式
2021/06/24 Python