author: Nathannie
date: 2022-03-24-19:05
date updated: '2022-03-24T19:28:51+08:00'
tags:
- '#thumbnailator'
- '#IO异常'
问题背景
学习ssm项目,实现商品添加功能,测试service层代码,在测试类中添加数据,添加图片报错。
报错信息
报错内容:
java.lang.RuntimeException: 创建缩图片失败:javax.imageio.IIOException: Can't read input file!
报错截图:
问题分析
图片使用 thumbnailator 工具库处理图片,给图片添加水印。根据报错信息,可知道Can't read input file!
指的获取水印图片文件报错,具体位于
try {
.outputQuality(0.8f) /*压缩图片*/
.toFile(dest);
Thumbnails.of(thumbnail.getImage()).size(337, 640)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(basePath + "/wartermark.jpg")), 0.25f)
.outputQuality(0.9f).toFile(dest);
} catch (IOException e) {
logger.error(e.toString());
throw new RuntimeException("创建缩图片失败:" + e.toString());
}
问题解决
结合相关参考给出的几个链接中可能的问题原因,最后发现是水印图片名称错误,导致整个水印图片的路径错误,读取图片文件错误。实际上代码没有问题,正确路径下的水印图片名为warter.jpg
(这里water水错写为warter),而给出的水印路径为water.jpg
。
总之,对于使用thumbnailator给图片添加水印出现的错误javax.imageio.IIOException: Can't read input file!
问题出现在ImageIO.read()
读取上。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。