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);}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】学习笔记01

一、基础语法 1. 字面量 - 什么是字面量? 在代码中,被写下来的的固定的值,称之为字面量。 - 常用的值类型 Python中常用的有6种值(数据)的类型。 666 13.14 "程序员"print(666) print(13.14) print(&qu…

excel统计分析——Scheffe法多重比较

参考资料:生物统计学 Scheffe法(雪费法)多重比较和LSD法一致,但通过k-1作为F分布的第一自由度对临界值进行调整: 其中,k为处理水平数,df为误差自由度;为 excel操作步骤如下&#xf…

基于YOLOv8深度学习的智能肺炎诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

SQL性能分析手段

SQL执行频率 MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供整个服务器执行sql的状态信息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次: -- session 是查看当前会话 ; -- globa…

SpringBoot项目如何优雅的实现操作日志记录

SpringBoot项目如何优雅的实现操作日志记录 前言 在实际开发当中,对于某些关键业务,我们通常需要记录该操作的内容,一个操作调一次记录方法,每次还得去收集参数等等,会造成大量代码重复。 我们希望代码中只有业务相关…

新能源汽车智慧充电桩方案:如何实现充电停车智慧化管理?

一、方案概述 基于新能源汽车充电桩的监管运营等需求,安徽旭帆科技携手合作伙伴触角云共同打造“智能充电设备+云平台+APP小程序”一体化完整的解决方案,为充电桩车位场所提供精细化管理车位的解决办法,解决燃油车恶意…

CHAPTER 9: 《DESIGN A WEB CRAWLER》第9章 《设计一个web爬虫》

CHAPTER 9: 《DESIGN A WEB CRAWLER》第九章 设计一个web爬虫 在本章中,我们将重点介绍网络爬虫设计:一种有趣而经典的系统设计 面试问题。 网络爬虫被称为机器人或蜘蛛。它被搜索引擎广泛用于发现网络上的新内容或更新内容。内容可以是网页、图像、视频…

前端性能优化-重绘与回流

在开发中,页面的性能优化很重要。性能优化的核心目标是提升用户体验,减少页面加载时间,提高页面的响应速度。 而在前端性能优化的过程中,优化重绘(repaints)与回流(reflow)是非常关…

【Java JVM】栈帧

执行引擎是 Java 虚拟机核心的组成部分之一。 在《Java虚拟机规范》中制定了 Java 虚拟机字节码执行引擎的概念模型, 这个概念模型成为各大发行商的 Java 虚拟机执行引擎的统一外观 (Facade)。 不同的虚拟机的实现中, 通常会有 解释执行 (通过解释器执行)编译执行 (通过即时编…

QT中操作word文档

QT中操作word文档: 参考如下内容: C(Qt) 和 Word、Excel、PDF 交互总结 Qt对word文档操作总结 QT中操作word文档 Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合。ActiveQt由两个模块组成: QAxContainer模…

从0开始python学习-48.pytest框架之断言

目录 1. 响应进行断言 1.1 在yaml用例中写入断言内容 1.2 封装断言方法 1.3 在执行流程中加入断言判断内容 2. 数据库数据断言 2.1 在yaml用例中写入断言内容 2.2 连接数据库并封装执行sql的方法 2.3 封装后校验方法是否可执行 2.4 使用之前封装的断言方法&#xff0c…

2. 示例:Spring Boot 入门

1.1 概述 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。习惯优于配置 1.2 为什么使用Spring Boot J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。 1.3 Spring Bo…