一、参考大神博客

1、https://blog.51cto.com/u_11269274/5118649

2、https://blog.csdn.net/weixin_44722978/article/details/111166154

二、引用

<!-- 图片缩略图 -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>

  三、上传接口中调用

  //上传图片-压缩
@PostMapping("/uploadPicCompress")
@ResponseBody
public AjaxResult uploadPicCompress(@RequestParam("file") MultipartFile file) throws IOException {
String filePath = getProfile() + "/group";// 上传图片路径
String fileName = file.getOriginalFilename();
String filePath1 = FileUploadUtils.upload(filePath, file);//文件上传返回存储路径
//压缩图片
String filePathObj=filePath1.replaceAll("/profile", getProfile());//绝对路径
int nameIndex=filePathObj.lastIndexOf('/');
String pathHeader=filePathObj.substring(0,nameIndex+1);
//图片缩放成宽度720px或者高度1100px的图片
BufferedImage image = ImageIO.read(new File(filePathObj));
int pictWidth = image.getWidth();
int pictHeight = image.getHeight();
double scaleK=1.0;//压缩比例
if(pictWidth>720){
scaleK=(double) 720 / pictWidth;
}else if(pictHeight>1100){
scaleK=(double) 1100 / pictHeight;
}
if(scaleK!=1.0){
int fileNampPoint=fileName.lastIndexOf('.');
String fileNameHead=fileName.substring(0,fileNampPoint);
String fileNameEnd=fileName.substring(fileNampPoint);
String scalePath=pathHeader+fileNameHead+"_"+ DateUtils.dateTimeNow()+fileNameEnd;//文件名称加时间,防止重复
Thumbnails.of(filePathObj).scale(scaleK).toFile(scalePath);//按比例缩小
//判断新文件保存是否成功,成功则删除原文件
File fileNew = new File(scalePath);
if(fileNew!=null){
new File(filePathObj).delete();
filePath1=scalePath.replaceAll(getProfile(),"/profile" );
}
}
return AjaxResult.success(filePath1);
}

  

springboot集成Thumbnailator压缩图片的更多相关文章

  1. springboot整合thumbnailator实现图片压缩

    springboot整合thumbnailator实现图片压缩 前言 最近由于首页产品列表图片显示太慢,经过研究发现是用户上传的图片太大. 针对这个问题,想到的解决方案是: 1. 产品上传时,限定图片 ...

  2. Thumbnailator压缩图片

    Thumbnailator是一款不可多得的处理图片的第三方工具包,它写法简单到让人无法相信,Java本身也有处理图片压缩的方法,但是代码冗长到让人痛不欲生,在篇末会给出Java本身的实现方式,做下对比 ...

  3. SpringBoot集成百度UEditor图片上传后直接访问404解决办法

    SpringBoot项目上传图片一般是上传至远程服务器存储,开发过程中可能会上传至当前项目的某个静态目录中,此时就会遇到这个问题,文件在上传之后直接访问并不能被访问到,必须重新加载项目. 首先分析一下 ...

  4. java 上传图片 并压缩图片大小

    Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...

  5. SpringBoot集成jsp

    一.springBoot集成jsp: 1.修改pom文件 <!--集成jsp所需jar包--> <!--jsp页面使用jstl标签--> <dependency> ...

  6. 流式大数据计算实践(5)----HBase使用&SpringBoot集成

    一.前言 1.上文中我们搭建好了一套HBase集群环境,这一文我们学习一下HBase的基本操作和客户端API的使用 二.shell操作 先通过命令进入HBase的命令行操作 /work/soft/hb ...

  7. java 上传图片 并压缩图片大小(转)

    Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...

  8. springBoot集成Redis遇到的坑(择库)源码分析为什么择库失败

    提示: springboot提供了一套链接redis的api,也就是个jar包,用到的连接类叫做LettuceConnectionConfiguration,所以我们引入pom时是这样的 <de ...

  9. Java压缩图片

    阅读目录 前言 压缩的要求 实现 优点 其他功能 前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的 ...

  10. SpringBoot集成Zipkin实现分布式全链路监控

    目录 Zipkin 简介 Springboot 集成 Zipkin 安装启动 zipkin 版本说明 项目结构 工程端口分配 引入 Maven 依赖 配置文件.收集器的设置 编写 Controller ...

随机推荐

  1. URL带参数json传递进行解析

    注意参数格式是要加密的: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  2. LeetCode-838 推多米诺

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/push-dominoes 题目描述 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立.在开始时 ...

  3. 线程join detach 僵尸线程

    进程死亡后,由父进程负责回收PCB资源,不回收则会出现僵尸进程 对于线程来说,任何一个线程都可以回收另一个线程的资源 在子线程终止后,通常在主线程中通过pthread_join来回收子线程的资源,获取 ...

  4. 免费ASP空间

    free免费asp空间的申请方法: free免费asp空间的ftp使用方法: sise.host3v.vip/1

  5. idea代码格式xml

    <code_scheme name="Default copy" version="173"> <option name="LINE ...

  6. Linux编辑器

    Vim 安装: yum install vim $ vim test.cnf  --打开文件 命令模式: i  --切换到输入模式,以输入字符 :  --切换到底线命令模式,以在最底一行输入命令 输入 ...

  7. datax缺少clickhouse reader插件

    背景:想要把click house的数据源同步到clickhouse,发现Datax没有clickhousereader组件. 1.把clickhousewriter/libs下的所有jar包复制到r ...

  8. 如何使用新版bing(支持ChatGPT)

    就在今天,2023年2月8日,微软正式将ChatGPT引入Bing 搜索引擎迎来新时代 如何体验支持ChatGPT的新版bing? 一.重要说明 请自备TiZi 本文以PC端为例 目前,新版 Bing ...

  9. 蓝牙mesh消息包与以太网帧的分层构成

    目录 笔者在接触以太网之前,先了解的是蓝牙mesh的各类信息.现翻看一本介绍TCP/IP协议的资料,发现应用层数据在以太网协议栈内的封装过程与蓝牙mesh协议栈内的封装过程异曲同工.下图左侧是手头这本 ...

  10. Prometheus 特点

    1.1 Prometheus的特点 Prometheus是一个开源的完整监控解决方案,其对传统监控系统的测试和告警模型进行了彻底的颠覆,形成了基于中央化的规则计算.统一分析和告警的新模型. 相比于传统 ...