问题:
使用压缩工具的时候突然遇到 图片压缩失败的情况。此时检查一下要上传的图片是否正常。
处理方式:
检查图片数据是否异常,一个图片五六兆。图片虽然是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() 是不为空的
图片格式异常的话你将文件流再怎么转也是过不去的。
标签:Java,No,Unknown,thumbnailator,byteArrayInputStream,ImageReader,coobird,net,图片 From: https://www.cnblogs.com/zhuguangzhe/p/17785284.html