ThinkPHP中图片按比例切割的代码实例


Posted in PHP onMarch 08, 2019

在开发中,经常会遇到图片需要按照一定比例进行缩放的情况,但是,如果一张长宽比为2:1的如果需要按照1:1的比例进行展示,那么这就意味着图片会发生变形。下面便介绍下载tp框架中如何按照比例切割并缩放图片。

/**
   * 切割图片
   * @param $path 所要切割的图片的路径
   * @param $prefix 给切割后图片的前缀
   * @param $width 宽度所占比例
   * @param $height 高度所占比例
   * @return string 图片名称
   */
function sizeThumb($path,$prefix,$width,$height){
  import("ORG.Util.Image.ThinkImage");
  $image=new ThinkImage();
  $image->open('.'.$path);//打开缩略图进行编辑
  $imageWidth=$image->width();//获得图片尺寸
  $imageHeight=$image->height();
  $save_name=getThumb($path, $prefix);
  if (($imageHeight/$height*$width)>$imageWidth) {//按照高切割,如果宽度没有那么长,就按宽度切
    $image->thumb($imageWidth, ($imageWidth/$width*$height),THINKIMAGE_THUMB_CENTER)->save('.'.$save_name);
  }else{
    $image->thumb(($imageHeight/$height*$width), $imageHeight,THINKIMAGE_THUMB_CENTER)->save('.'.$save_name);
  }
  return $save_name;
}

在这里采用的是从中间进行截图最大比例的图片的方式,如果需要使用其他方式的话,例如从左边开始截取这样的,修改‘THINKIMAGE_THUMB_CENTER'即可,服务端采取这样的方式也并不是必要的,毕竟前端也可以处理,应当按照实际情况进行考虑。

当然,一般进行图片的存储都是存储图片的相对位置,如果生成了缩略图,我们其实也没有必要再使用一个字段保存我们的缩略图,我们只需要重写切割拼接字符串就行

/**
   * 获取图片路径
   * @param $prefix 图片的前缀
   * @param $img_url 原图的路径
   * @return string 图片路径
   */
function getThumb($img_url,$prefix){
  $str_arr=explode('/', $img_url);
  $last=count($str_arr);
  $str_arr[$last-1]=$prefix.$str_arr[$last-1];
  $str=implode('/', $str_arr);
  return $str;
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
图书管理程序(一)
Oct 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
初识PHP中的Swoole
Apr 05 PHP
php数组分页实现方法
Apr 30 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
PHP中的表达式简述
May 29 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
php readfile()修改文件上传大小设置
Aug 11 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
PHP的微信支付接口使用方法讲解
Mar 08 #PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 #PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 #PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 #PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 #PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 #PHP
php使用fullcalendar日历插件详解
Mar 06 #PHP
You might like
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
查看Django和flask版本的方法
2018/05/14 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
python字典排序的方法
2019/10/12 Python
python判断链表是否有环的实例代码
2020/01/31 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
Python中过滤字符串列表的方法
2020/12/22 Python
怎么样写好简历中的自我评价
2013/10/25 职场文书
八年级美术教学反思
2014/02/02 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
在校证明模板
2015/06/17 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书