Exception in thread "main" javax.imageio.IIOException: Can't read input file!——问题的解决

在使用Thumbnailator进行图片处理时,老是报出 javax.imageio.IIOException: Can’t read input file!
在这里插入图片描述

我是通过 String basePaths = Thread.currentThread().getContextClassLoader().getResource("").getPath();来获取对应项目中图片的路径,通过Thumbnailator寻找到该路径并进行图片的处理操作

public static void main(String[] args) throws IOException {
        String basePaths = Thread.currentThread().getContextClassLoader().getResource("").getPath();
        Thumbnails.of(new File("/Sakura/Pictures/image/player.jpg")).size(200, 200).watermark(Positions.BOTTOM_RIGHT,
                ImageIO.read(new File(basePaths+"/blue.jpg")), 0.25f).outputQuality(0.8f).toFile("/Sakura/Pictures/image/test03.jpg");
    }

根据报错提示,应该是classpath的路径出错了,于是我在控制台上打印了对应的路径
在这里插入图片描述
发现莫名其妙多个%e6%a0%a1%e5%9b%ad%e5%95%86%e9%93%ba%e5%b9%b3%e5%8f%b0那么多不知所云的东西。。。。。

查阅资料后发现是我的项目名是中文的,因此解码时会直接乱码,需要对获取的classpath进行utf-8的解码才行,即如下

basePaths= URLDecoder.decode(basePaths,"utf-8");

重新运行发现便可以啦
在这里插入图片描述
而对比了刚才那个控制台输出的路径,发现果然是因为含有中文时需要用utf-8进行解码才行,不然会发生乱码,进而找不到相对应的路径

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值