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 相关文章推荐
PHP文件上传实例详解!!!
Jan 02 PHP
用php实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
php生成文件
Jan 15 PHP
PHP 压缩文件夹的类代码
Nov 05 PHP
PHP 命名空间实例说明
Jan 27 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
PHP中数组定义的几种方法
Sep 01 PHP
PHP常用日期加减计算方法实例小结
Jul 31 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 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 MemCached 高级缓存应用代码
2010/08/05 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
PHP基础陷阱题(变量赋值)
2012/09/12 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php类常量用法实例分析
2015/07/09 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
草船借箭教学反思
2014/02/03 职场文书
社团活动总结格式
2014/08/29 职场文书
2015年招聘工作总结
2014/12/12 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
php去除deprecated的实例方法
2021/11/17 PHP
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers