Java使用thumbnailator进行图片压缩处理

-- 添加依赖

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

-- 测试代码类

复制代码
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;

import javax.imageio.ImageIO;

import net.coobird.thumbnailator.Thumbnails;

public class ImageTest {

public static void main(String[] args) {
try {
commpressPicCycle("C:\\Users\\Justin\\Desktop\\下载\\temp\\IMG_0004.JPG",1024,0.8);
} catch (IOException e) {
e.printStackTrace();
}
}
// 压缩图片
private static void commpressPicCycle(String desPath, long desFileSize, double accuracy) throws IOException {
System.out.println("压缩开始。。。");
File srcFileJPG = new File(desPath);
long srcFileSizeJPG = srcFileJPG.length();
System.out.println(srcFileSizeJPG);
// 2、判断大小,如果小于1M,不压缩;如果大于等于1M,压缩
if (srcFileSizeJPG <= desFileSize * 1024) {
return;
}
// 计算宽高
BufferedImage bim = ImageIO.read(srcFileJPG);
int srcWdith = bim.getWidth();
int srcHeigth = bim.getHeight();
int desWidth = new BigDecimal(srcWdith).multiply(new BigDecimal(accuracy)).intValue();
int desHeight = new BigDecimal(srcHeigth).multiply(new BigDecimal(accuracy)).intValue();

Thumbnails.of(desPath).size(desWidth, desHeight).outputQuality(accuracy).toFile(desPath);
System.out.println("压缩结束。。。");
commpressPicCycle(desPath, desFileSize, accuracy);
}
}
复制代码

 

posted @   孤舟蓑笠翁·  阅读(340)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示