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()读取上。

相关参考


nathannie
15 声望1 粉丝

better and better, day by day.


引用和评论

0 条评论