springboot集成Thumbnailator压缩图片
一、参考大神博客
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压缩图片的更多相关文章
- springboot整合thumbnailator实现图片压缩
springboot整合thumbnailator实现图片压缩 前言 最近由于首页产品列表图片显示太慢,经过研究发现是用户上传的图片太大. 针对这个问题,想到的解决方案是: 1. 产品上传时,限定图片 ...
- Thumbnailator压缩图片
Thumbnailator是一款不可多得的处理图片的第三方工具包,它写法简单到让人无法相信,Java本身也有处理图片压缩的方法,但是代码冗长到让人痛不欲生,在篇末会给出Java本身的实现方式,做下对比 ...
- SpringBoot集成百度UEditor图片上传后直接访问404解决办法
SpringBoot项目上传图片一般是上传至远程服务器存储,开发过程中可能会上传至当前项目的某个静态目录中,此时就会遇到这个问题,文件在上传之后直接访问并不能被访问到,必须重新加载项目. 首先分析一下 ...
- java 上传图片 并压缩图片大小
Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...
- SpringBoot集成jsp
一.springBoot集成jsp: 1.修改pom文件 <!--集成jsp所需jar包--> <!--jsp页面使用jstl标签--> <dependency> ...
- 流式大数据计算实践(5)----HBase使用&SpringBoot集成
一.前言 1.上文中我们搭建好了一套HBase集群环境,这一文我们学习一下HBase的基本操作和客户端API的使用 二.shell操作 先通过命令进入HBase的命令行操作 /work/soft/hb ...
- java 上传图片 并压缩图片大小(转)
Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...
- springBoot集成Redis遇到的坑(择库)源码分析为什么择库失败
提示: springboot提供了一套链接redis的api,也就是个jar包,用到的连接类叫做LettuceConnectionConfiguration,所以我们引入pom时是这样的 <de ...
- Java压缩图片
阅读目录 前言 压缩的要求 实现 优点 其他功能 前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的 ...
- SpringBoot集成Zipkin实现分布式全链路监控
目录 Zipkin 简介 Springboot 集成 Zipkin 安装启动 zipkin 版本说明 项目结构 工程端口分配 引入 Maven 依赖 配置文件.收集器的设置 编写 Controller ...
随机推荐
- VueTSX 动态使用 element-plus 图标
写 TSX 的目的 element-plus 图标集有很多,但有时需要动态使用某个图标,把所有可能用到的图标都列举出来,通过 v-if 在组件中决定到底渲染哪一个,很费时. .vue 单文件组件中做不 ...
- Activity 和 Fragment 中的视图绑定
开启视图绑定 找到 build.gradle 文件,因为有两个 build.gradle,我们要操作的是第二个: 在这个位置加上这一句话,然后点击右上角的 Sync Now 按钮更新项目: andro ...
- ESXi 安装 Truenas Core 解决企业共享存储免费方案
服务器配置 创建虚拟机内存最少8+,建议选择32,CPU没啥用,我给了2,硬盘我选择了50G+8T,因为一个虚拟机无法使用两个存储池,所以全部使用非SSD硬盘,自带网卡删除,单独给一个直通网卡,建议上 ...
- flexible.js源码分析
(function flexible(window,document){ // 获取html的根元素 var docEl = document.documentElement; // dpr 物理像素 ...
- marker的存储组---layerGroup
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...
- VMware-包体选择
3.二进制包如何选择3.1选择适合当前系统的版本号: ●找不到适合的,才去尝试别的系统版本号 ●el6兼容el5; el5无法安装el63.2选择适合cpu的架构: ●x86_ _64包 ...
- PTA---求月天数
最近做了几次模拟考试,对于求月天数这个题目有了更深一点的理解. 这个题的题目基本就是让用户输入年份和月份,给出该月有多少天. 对于这个题,首先就要考虑年份的问题,因为闰年和非闰年在二月是有一点不同的, ...
- SQL group by date (hour),数据库按小时分组统计数据量
SELECT COUNT(1), TRUNC(BEGINTIME, 'HH24') FROM TASK -- WHERE BEGINTIME > '2022-03-01' GROUP BY TR ...
- ssm框架下的拦截器过滤静态资源以及拦截jsp
这篇文章如果能给你带来帮助 不胜荣幸,如果有错误 ,欢迎批评指正,共同进步. 今天啊搭了一个ssm的框架 虽然说现在大部分都在使用shiro权限,可是正如mybatis.hibernate和jdbc的 ...
- vim下的查找命令
linux下vim 查找命令: /text --查找text, 按n查找下一个, N查找上一个 ?text --查找text(反向查找), 按n查找下一个, N查找上一个 */# --查找光标当前的单 ...