一、参考大神博客

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

  

最新文章

  1. jsonp跨域+ashx(示例)
  2. cout格式化输出
  3. java 深入技术五 (泛型)
  4. C# 压缩文件与字节互转
  5. Unity3D中制作Loading场景进度条
  6. java编程思想-java IO系统
  7. 利用javascript、php和ajax实现计算器
  8. LoadRunner系统架构简介
  9. 使用Parallel
  10. hdu 1885 Key Task(bfs+位运算)
  11. JSTL入门
  12. 关于在打包Jar文件时遇到的资源路径问题(一)
  13. shell基本语法
  14. 为IE8添加EventListener系列方法支持
  15. [HNOI2010]MATRIX 矩阵
  16. 605. Can Place Flowers
  17. IAR各个历史版本的下载地址
  18. (转)以太坊(Ethereum)创世揭秘 以太坊(Ethereum)创世揭秘
  19. [转]Vue.js 入门教程
  20. 2018-2019-2 网络对抗技术 20165332 Exp1 PC平台逆向破解

热门文章

  1. CF863E - Turn Off The TV
  2. 自己动手从零写桌面操作系统GrapeOS系列教程——6.电脑启动过程介绍
  3. 运维排查篇 | Linux 连接跟踪表满了怎么处理
  4. 原创如何给MDK5.37添加Arm Compiler 5
  5. gcc 内联汇编简介
  6. N63050 第十一周运维作业
  7. killall: command not found
  8. .NET 6 + Hangfire 实现后台作业管理
  9. Windows 11在使用AMD时,CPU占用率持续100%的解决方案
  10. reids 启动方法