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版(1)
Oct 09 PHP
PHP聊天室技术
Oct 09 PHP
织梦模板标记简介
Mar 11 PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
PHP 在线翻译函数代码
May 07 PHP
PHP 压缩文件夹的类代码
Nov 05 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
php结合ajax实现赞、顶、踩功能实例
May 12 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
php array_key_exists() 与 isset() 的区别
Oct 24 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 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程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
PHP多文件上传类实例
2015/03/07 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
JavaScript Split()方法
2015/12/18 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
Hadoop中的Python框架的使用指南
2015/04/22 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
pow在python中的含义及用法
2019/07/11 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
c++工程师面试问题
2013/08/04 面试题
廉洁家庭事迹材料
2014/05/15 职场文书
招标授权委托书样本
2014/09/23 职场文书
离职证明范本
2015/06/12 职场文书
英语导游欢迎词
2015/09/30 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL