在使用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进行解码才行,不然会发生乱码,进而找不到相对应的路径