因为开发中要上传文件到fastdfs,需要对图片进行压缩处理,找到了Thumbnails包,
thumbnailator包中央仓库坐标
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
一个对图片进行10倍压缩的例子
byte [] buf = null;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Thumbnails.of(file.getInputStream()).scale(0.1f).toOutputStream(outputStream);
buf = outputStream.toByteArray();
直接把获取并处理inputstream,完了之后可转成字符数组。
或者直接处理图片
String path = "E:/img/1.jpg";
Thumbnails.of(path).scale(0.1f).toFile("E:/img/2.jpg");
可以看到分辨率同比缩小了10倍
也可以固定大小
Thumbnails.of(path).size(960, 600).keepAspectRatio(false).toFile("E:/img/3.jpg");
把原图的分辨率缩小一半。