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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
PHP个人网站架设连环讲(四)
Oct 09 PHP
一个分页的论坛
Oct 09 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
php写入txt乱码的解决方法
Sep 17 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
ext jquery 简单比较
2010/04/07 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
python 域名分析工具实现代码
2009/07/15 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
运动会邀请函范文
2014/02/06 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书