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的ASP防火墙
Oct 09 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
php 冒泡排序 交换排序法
May 10 PHP
CURL的学习和应用(附多线程实现)
Jun 03 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
php实现中文字符截取防乱码方法汇总
Apr 29 PHP
php中Snoopy类用法实例
Jun 19 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
thinkphp5使用无限极分类
Feb 18 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 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
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
php设置编码格式的方法
2013/03/05 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
PHP反射基础知识回顾
2020/09/10 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
Python中的index()方法使用教程
2015/05/18 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
python 调用c语言函数的方法
2017/09/29 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
Django框架模板用法入门教程
2019/11/04 Python
python字典的值可以修改吗
2020/06/29 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
英国手机零售商:Metrofone
2019/03/18 全球购物
大学生求职自荐信
2013/12/12 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
大气污染防治方案
2014/05/19 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
驻村工作先进事迹
2014/08/14 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
标准单位租车协议书
2014/09/23 职场文书
四风查摆剖析材料
2014/10/10 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书