Springboot中使用谷歌Thumbnailator处理图片



最近公司有个需求,需要我批量处理社区用户大头像图片,要尽量压缩到100kb以下且不能糊,使用了下面这个开源库,效率还挺可观的,除了部分图片里色彩十分丰富的会存在色差。

谷歌开源库 Thumbnailator 可根据已有图片,截取指定范围并缩放,还支持添加水印

Maven: https://mvnrepository.com/artifact/net.coobird/thumbnailator

1
2
3
4
5
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>

首先对单个图片文件压缩处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 建议读取 JPG 图片,PNG解析可能存在问题
File file = new File("D:\\study-java\\src\\main\\resources\\images\\lauy.jpg");
InputStream fi = new FileInputStream(file);

// 存的项目的中模版图片
String filePath = "D:\\study-java\\src\\main\\resources\\new_images\\";

Thumbnails.of(fi)
// .scale(0.5f) // 图片缩放率,不能和size()一起使用
.size(750, 750) // 分辨率设置
.keepAspectRatio(false) // 默认是按照比例缩放的,所以可能就不跟你自定义的size比例匹配
.outputQuality(0.7) // 图片质量
.toFile(filePath + System.currentTimeMillis() + "-" + file.getName());

// 输出图片到流对象
OutputStream os = new FileOutputStream(file.getAbsolutePath() + "_lauy.png");
Thumbnails.of(filePath)
.size(1280, 1024)
.toOutputStream(os);

// 输出图片到BufferedImage
BufferedImage thumbnail = Thumbnails.of(filePath)
.size(1280, 1024)
.asBufferedImage();
ImageIO.write(thumbnail, "jpg", new File(file.getAbsolutePath()+"_lauy.jpg"));

效果对比预览图

参考-原文链接:https://blog.csdn.net/null111666/article/details/86063751

打赏
  • 版权声明: 本网站所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  1. © 2020-2021 Lauy    湘ICP备20003709号-1

请我喝杯咖啡吧~

支付宝
微信