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模拟HTTP认证
Oct 09 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
PHP中is_file()函数使用指南
May 08 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 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设置允许大文件上传示例代码
2014/03/10 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
取选中的radio的值
2010/01/11 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
python使用Tesseract库识别验证
2018/03/21 Python
Python实现图片拼接的代码
2018/07/02 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
python如何支持并发方法详解
2020/07/25 Python
Python实现一个优先级队列的方法
2020/07/31 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
计算机求职信
2013/12/01 职场文书
学雷锋标语
2014/06/25 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android