Java图片压缩遇到 "No suitable ImageReader found for source data."
问题:
使用压缩工具的时候突然遇到 图片压缩失败的情况。此时检查一下要上传的图片是否正常。
处理方式:
检查图片数据是否异常,一个图片五六兆。图片虽然是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() 是不为空的
图片格式异常的话你将文件流再怎么转也是过不去的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
2019-10-25 泛型