Java图片压缩遇到 "No suitable ImageReader found for source data."

发布时间 2023-10-25 11:25:17作者: 烟雨蒙尘

 问题:

  使用压缩工具的时候突然遇到 图片压缩失败的情况。此时检查一下要上传的图片是否正常。

处理方式:

  检查图片数据是否异常,一个图片五六兆。图片虽然是JPG结尾的,但是不在 ImageIO” 类的支持范围内。例如 WebP 图片虽然可以以JPG格式结尾,但是  ImageIO” 类不支持方法解析

代码如下

 1       URL url = new URL("https:/***/1696905412973.jpg");
 3         ByteArrayInputStream byteArrayInputStream = null;
 4         try {
 5             byteArrayInputStream = new ByteArrayInputStream(url.getFile().getBytes());
 6             Thumbnails.of(byteArrayInputStream).scale(0.5f).outputQuality(0.5f).toFile("E:\\tmp\\1.jpg");
 7         } catch (IOException e) {
 8             e.printStackTrace();
 9              FileOutputStream out = new FileOutputStream(new File("E:\\tmp\\2.jpg"));
10             // Thumbnails.of(url.openStream()).size(300,300).toOutputStream(out);
11             InputStream inputStream = url.openStream();
12             IoUtil.copy(inputStream,out);
13         }finally {
14             if (byteArrayInputStream != null){
15                 byteArrayInputStream.close();
16             }
17         }

代码一直走catch里面的逻辑

1 Exception in thread "main" net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data.
2     at net.coobird.thumbnailator.tasks.io.InputStreamImageSource.read(Unknown Source)
3     at net.coobird.thumbnailator.tasks.SourceSinkThumbnailTask.read(Unknown Source)
4     at net.coobird.thumbnailator.Thumbnailator.createThumbnail(Unknown Source)
5     at net.coobird.thumbnailator.Thumbnails$Builder.toOutputStream(Unknown Source)

在跟踪详细代码的时候发现数据流解析使用的是  ImageIO”

 正常的截图数据  var2.hasNext() 是不为空的

图片格式异常的话你将文件流再怎么转也是过不去的。