springboot集成Thumbnailator压缩图片
2024-10-21 06:43:02
一、参考大神博客
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);
}
最新文章
- jsonp跨域+ashx(示例)
- cout格式化输出
- java 深入技术五 (泛型)
- C# 压缩文件与字节互转
- Unity3D中制作Loading场景进度条
- java编程思想-java IO系统
- 利用javascript、php和ajax实现计算器
- LoadRunner系统架构简介
- 使用Parallel
- hdu 1885 Key Task(bfs+位运算)
- JSTL入门
- 关于在打包Jar文件时遇到的资源路径问题(一)
- shell基本语法
- 为IE8添加EventListener系列方法支持
- [HNOI2010]MATRIX 矩阵
- 605. Can Place Flowers
- IAR各个历史版本的下载地址
- (转)以太坊(Ethereum)创世揭秘 以太坊(Ethereum)创世揭秘
- [转]Vue.js 入门教程
- 2018-2019-2 网络对抗技术 20165332 Exp1 PC平台逆向破解