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 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
一致性哈希算法以及其PHP实现详细解析
Aug 24 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
PHP简单的MVC框架实现方法
Dec 01 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
php array_udiff_assoc 计算两个数组的差集实例
Nov 12 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
深入浅析Python传值与传址
2018/07/10 Python
python创建学生成绩管理系统
2019/11/22 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
毕业生自我鉴定
2013/11/05 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
工作建议书范文
2019/07/08 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers