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分页显示制作详细讲解
Oct 09 PHP
资料注册后发信小技巧
Oct 09 PHP
聊天室php&mysql(四)
Oct 09 PHP
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
PHP学习之数组值的操作
Apr 17 PHP
php获取post中的json数据的实现方法
Jun 08 PHP
PHPUnit安装及使用示例
Oct 29 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
php面向对象的用户登录身份验证
Jun 08 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 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+mysql写的简单留言本实例代码
2008/07/25 PHP
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Python简单日志处理类分享
2015/02/14 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
python 动态绘制爱心的示例
2020/09/27 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
python代码实现猜拳小游戏
2020/11/30 Python
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
闭幕式主持词
2014/04/02 职场文书
安全演讲稿大全
2014/05/09 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
获奖感言一句话
2015/07/31 职场文书
Java内存模型之happens-before概念详解
2021/06/13 Java/Android