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 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
php 分页原理详解
Aug 21 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
页面乱码问题的根源及其分析
Aug 09 PHP
sae使用smarty模板的方法
Dec 17 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
php短信接口代码
May 13 PHP
PHP中set_include_path()函数相关用法分析
Jul 18 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
php DES加密算法实例分析
Sep 18 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字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
python实现简单登陆系统
2018/10/18 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
企业宣传工作方案
2014/06/02 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
处级干部考察材料
2014/12/24 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
孙振耀退休感言
2015/08/01 职场文书
2016年寒假家长评语
2015/10/10 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL