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如何编写易读的代码
Jul 10 PHP
php 引用(&)详解
Nov 20 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
php获取随机数组列表的方法
Nov 13 PHP
php数组添加元素方法小结
Dec 20 PHP
php制作动态随机验证码
Feb 12 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
php比较两个字符串长度的方法
Jul 13 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
PHP实现抽奖功能实例代码
Jun 30 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中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
python设置值及NaN值处理方法
2018/07/03 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
项目采购员岗位职责
2014/04/15 职场文书
企业晚会策划方案
2014/05/29 职场文书
护士2014年终工作总结
2014/11/11 职场文书
个人思想政治总结
2015/03/05 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏