一、场景
使用数据库保存的minio url,从minio中拉取图片,使用Thumbnails进行图片压缩,然后重新上传至minio中。
二、报错代码
private ByteArrayInputStream scalePic(InputStream inputStream, Double accuracy) throws IOException {
// 使用 ByteArrayOutputStream 来接收压缩后的图片数据
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
Thumbnails.of(inputStream)
.scale(accuracy)
.outputQuality(0.8)
.toOutputStream(outputStream);
// 将 ByteArrayOutputStream 转换为 InputStream
return new ByteArrayInputStream(outputStream.toByteArray());
}
}
三、尝试解决办法
1、将InputStream更改为ByteArrayInputStream,结果失败(但可以更改为BufferedImputStream)试试,具体原因还没研究清楚。
2、将入参更改为URL参数,结果成功
private ByteArrayInputStream scalePic(URL url, Double accuracy) throws IOException {
// 使用 ByteArrayOutputStream 来接收压缩后的图片数据
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
Thumbnails.of(url)
.scale(accuracy)
.outputQuality(0.8)
.toOutputStream(outputStream);
// 将 ByteArrayOutputStream 转换为 InputStream
return new ByteArrayInputStream(outputStream.toByteArray());
}
}
具体错误原因有待深究