ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Exception in thread "main" javax.imageio.IIOException: Can't read input file!

2020-04-28 21:54:35  阅读:331  来源: 互联网

标签:Exception imageio thread basePath 路径 File import net main


 

package com.o2o.util;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;

import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
import java.net.URLDecoder;

public class ImageUtil {
    public static void main(String[] args) throws IOException {
        //水印图片绝对路径,方法是通过线程运行的,因此可以通过线程逆推到类加载器,从类加载器中获取到资源的路径
        String basePath=Thread.currentThread().getContextClassLoader().getResource("").getPath();
        System.out.println(basePath);
        //可以传入文件也可以传入图片,
        Thumbnails.of(new File("/home/image/background-tela.jpg"))
                //并指定输出图片的大小
                .size(200,200)
                //水印图片
                .watermark(Positions.BOTTOM_RIGHT,
                        //0.25f:透明度
                        ImageIO.read(new File(basePath+"283315.jpg")),0.25f)
                //压缩比
                .outputQuality(0.8f)
                //输出文件
                .toFile("/home/image/background.jpg");

    }
}

最近在做javaweb项目,但是在测试上面的代码时出现了 Exception in thread "main" javax.imageio.IIOException: Can't read input file!

开始时看到这个异常时很是困惑,心想难道路径错了?但是我没有直接输入路径而是通过Thread.currentThread().getContextClassLoader().getResource("").getPath();直接获取的路径,按原理说不应该i出现错误,

于是开始在网上查找资料,找了半天最后在https://blog.csdn.net/pengzhisen123/article/details/89634647这篇博客中找到了灵感,这篇文章的作者是在路径中出现了空格这一特殊字符,因此出现了上述异常,

抱着尝试的态度打印出来了路径发现果然出现了中文乱码,知道原因后,解决方法自然而然的就有了

//解决乱码的方法
basePath= URLDecoder.decode(basePath,"utf-8");

在查找相关资料时,看到了另一种可能出现的情况:

  windows下分隔符得用“ \ ”(basepath打印出来分隔符是" / "),但是然后就basepath = basepath.replace('\',File.separatorChar)

  但是本人使用的是Linux因此上述的方法不作测试,先记录下来

标签:Exception,imageio,thread,basePath,路径,File,import,net,main
来源: https://www.cnblogs.com/xing-29391/p/12797481.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有