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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 PHP
PHP将字符分解为多个字符串的方法
Nov 22 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
php无序树实现方法
Jul 28 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP命名空间用法实例分析
Sep 04 PHP
php解析非标准json、非规范json的方式实例
Dec 10 PHP
PHP设计模式(观察者模式)
Jul 07 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
ThinkPHP采用模块和操作分析
2011/04/18 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
Python简单读取json文件功能示例
2017/11/30 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
办理房产过户的委托书
2014/09/14 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
安全生产月宣传标语
2014/10/06 职场文书
资料员岗位职责范本
2015/04/13 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
python blinker 信号库
2022/05/04 Python