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 相关文章推荐
我的群发邮件程序
Oct 09 PHP
PHP3 safe_mode 失效漏洞
Oct 09 PHP
php桌面中心(三) 修改数据库
Mar 11 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
Sep 29 PHP
基于php验证码函数的使用示例
May 03 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
php中数字0和空值的区别分析
Jun 05 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 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 和 COM
2006/10/09 PHP
php 什么是PEAR?(第三篇)
2009/03/19 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php远程下载类分享
2016/04/13 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
php数组和链表的区别总结
2019/09/20 PHP
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
js实现常用排序算法
2016/08/09 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
工程部主管岗位职责
2013/11/17 职场文书
大学毕业后的十年规划
2014/01/07 职场文书
会议邀请函范文
2014/01/09 职场文书
通信工程专业求职信
2014/06/04 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
土建施工员岗位职责
2015/04/11 职场文书
初婚未育证明样本
2015/06/18 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
React配置子路由的实现
2021/06/03 Javascript
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android