Fastadmin上传图片服务端压缩图片,实测13.45M压缩为29.91K

先前条件:第一步安装compose,已安装忽略。
先上截图看效果
在这里插入图片描述

一、在fastadmin的根目录里面输入命令安装think-image
在这里插入图片描述

composer require topthink/think-image

二、找到公共上传类,application/common/library/Upload.php,在最下面新添加一个压缩方法

    /**
     * 图片压缩方法
     */
    public function compressImage(&$params, $ratio = 10)
    {
        //图片大于300K才进行压缩,先判断是横图,还是坚图,设置图片宽最大820,高最大560,做出相对应的比例压缩
        if ($params['filesize'] > 300000) {
            //横图=宽比高大
            if ($params['imagewidth'] >= $params['imageheight']) {
                if ($params['imagewidth'] >= 820) {
                    $width = 820;
                    $height = round($params['imageheight'] / ($params['imagewidth'] / 820));
                } else {
                    $width = $params['imagewidth'];
                    $height = $params['imageheight'];
                }
            } else { //坚图=高比宽大
                if ($params['imageheight'] >= 560) {
                    $height = 560;
                    $width = round($params['imagewidth'] / ($params['imageheight'] / 560));
                } else {
                    $width = $params['imagewidth'];
                    $height = $params['imageheight'];
                }
            }

            $pathname = $params['url'];
            $file = $this->file;
            $image = \think\Image::open($file);
            $image->thumb($width, $height)->save('.' . $pathname);
            $image_root_path = ROOT_PATH . '/public' . $pathname;
            $params['imagewidth'] = $width;
            $params['imageheight'] = $height;
            $params['filesize'] = filesize($image_root_path);
        }
    }

三、在application/common/library/Upload.php文件中,找到里面的 upload() 方法,在文件上传完成,将要添加到attachment表的图片数据时进行等比压缩处理
在这里插入图片描述

        // 开启压缩
        if (in_array($this->fileInfo['type'], ['image/gif', 'image/jpg', 'image/jpeg', 'image/bmp', 'image/png', 'image/webp']) || in_array($this->fileInfo['suffix'], ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'webp'])) {
            $this->compressImage($params);
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/319574.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java SE入门及基础(12)

do-while 循环 1. 语法 do { //循环操作 } while ( 循环条件 ); 2. 执行流程图 3. 案例 从控制台录入学生的成绩并计算总成绩,输入0 时退出 4. 代码实现 public static void main ( String [] args ) { Scanner sc new Scanner ( System . in )…

大面积光源HUD阳光倒灌实验装置太阳光模拟器

背景 1.根据现在市场上一些量产的hud的结构和原理可知,hud中最重要的零件之一就是凹面镜(自由曲面),hud利用凹面镜放大投影的光学原理进行投影成像。当发生阳光倒灌时,太阳光沿着hud正常工作时成像的逆光路,通过挡风玻璃-凹面镜-…

豆包ai介绍

豆包是字节跳动基于云雀模型开发的AI工具,具有强大的语言处理能力和广泛的应用场景,无论是在学习、工作、生活中,都能派上用场。 豆包可以帮助打工人和创作者提升效率,完成各种工作任务,又能扮演各类AI角色进行高情商…

MySQL简介、安装及使用

一、MySQL简介 1、MySQL的介绍 MySQL数据库管理系统由瑞典的DataKonsultAB公司研发,该公司被Sun公司收购,现在Sun公司又被Oracle公司收购,因此MySQL目前属于 Oracle 旗下产品。 MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言…

【Python学习】Python学习17- File(文件) 方法

目录 [TOC](【Python学习】Python学习17- File(文件) 方法) 文章所属专区 Python学习 前言 本章节主要说明Python文件操作的具体说明 open()方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数&#…

CnosDB的数据更新和删除

在时序数据中,可能会出现一些数据错误或者异常情况,这时候就需要能够对数据进行清洗修复。如果不支持更新操作,将会变得非常困难。另外,一些业务场景可能会需要对已有数据进行调整,比如设备信息发生变化等。支持数据更…

Python开源项目周排行 2024年第2周

点赞关注转发三连,您的支持是我的动力! Python 趋势周报,按周浏览往期 GitHub,Gitee 等最热门的Python开源项目,入选的项目主要参考GitHub Trending,部分参考了Gitee和其他。排名不分先后,都是当周相对热门的项目。 …

12.3在应用层使用SPI总线

在SPI总线驱动框架中提供了一个spidev 的字符设备驱动,在应用层可以通过它来访问SPI总线。 应用层访问SPI总线的步骤 编写spidev设备树节点,在SPI总线的设备树节点下添加spidev设备的树节点,设备树示例如下所示: spidev0: spid…

《射雕三部曲》人物关系可视化及问答系统

背景: 该项目旨在构建一个基于图数据库和知识图谱的《射雕三部曲》人物关系可视化及问答系统。通过分析小说中的人物关系,将其构建成图数据库,并结合问答系统和数据分析技术,提供用户可视化的人物关系展示和相关问题的回答。 介绍…

Altium Desigenr 丝印重叠报错 规则修改1

Altium Desigenr画板时如果两个元件放的太近会变绿违反规则,特别实在有元器件外框同时需要减少PCB面积。两个电阻丝印紧挨报错,本质上不会影响但会报错。 1、首先在规则里面改小 2、如果不满足依旧报错,直接关闭元件放置规则,但…

宠物空气净化器哪个牌子好?实惠的猫用空气净化器牌子推荐

对于养猫的朋友来说,猫咪掉毛绝对是一个让人头痛的问题。猫毛和皮屑会飘散在空气中,不仅会遍布全屋的各个角落,而且打扫起来也麻烦,特别是一些清理不了的猫毛,甚至还可能引起人的过敏反应,例如咳嗽和哮喘。…

Unity组件开发--UI管理器

1.Canvas组件: 注意属性: (1)渲染模式是:屏幕空间相机 (2)创建一个UICamera节点,管理相机 (3)屏幕画布缩放模式 (4)画布下挂载两…

python使用贪心算法求最大整数问题

对于使用贪心算法的一个比较经典的问题,主要是为了解决最大整数的拼接问题,如果给定一个列表,这个列表中所包括的是一些非负整数,如果对这些整数进行组合,怎样才能组合出一个最大的整数,这里要注意一个问题…

springboot学生信息管理系统

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1研究背景 随着…

浅析爱泼斯坦事件 —— 弱电控制强电原理

据网络文字与视频资料,爱泼斯坦事件是犹太精英阶层,为了掌控美国国家机器为犹太利益集团服务,而精心设下的一个局。本文先假设这个结论成立,并基于此展开讨论。 我们知道,弱电管理强电是电气工程中的一门专门学问&…

探索未来餐饮:构建创新连锁餐饮系统的技术之旅

随着数字化时代的发展,连锁餐饮系统的设计和开发不再仅仅关乎订单处理,更是一场充满技术创新的冒险。在本文中,我们将深入研究连锁餐饮系统的技术实现,带你探索未来餐饮业的数字化美食之旅。 1. 构建强大的后端服务 在设计连锁…

P5461 赦免战俘题解

题目 现有2n2n(n≤10) 名作弊者站成一个正方形方阵等候kkksc03的发落。kkksc03决定赦免一些作弊者。他将正方形矩阵均分为4个更小的正方形矩阵,每个更小的矩阵的边长是原矩阵的一半。其中左上角那一个矩阵的所有作弊者都将得到赦免,剩下3个小矩阵中&…

AI与编程学习

在C语言中,指针通常与字符数组或字符串打交道时会涉及到ASCII码的转换,而不是用于表现多位数的第一位。48这个值对应的是ASCII码表中数字字符0的编码。 如果你有一个表示多位数的字符数组,例如: c char number[] "1234&qu…

Abaqus汉化教程

用钢铁意志,成就不平凡人生。 今天博主整理了一下Abaqus2023汉化教程,希望大家学习。 第一步,在在菜单栏找到Abaqus CAE右键打开文件所在的位置 第二步:继续右键Abaqus CAE右键打开文件所在的位置 第三步:然后进入到…

Neo4j知识图谱(1)初识Neo4j

首先第一步是安装JDK和Neo4j,配置他们的环境变量,因为Neo4j不支持低版本JDK,所以要下载较新版本的。安装就在oracle官网下载。配置环境变量在之前博文有说过,配置完环境变量之后可以在命令行窗口查看一下JDK版本。(最好…