从.jar文件加载Java Image

时间:2016-07-03 23:34:48

标签: java jar image-loading

我正在尝试从用户将图像放入的名为Custom的文件夹中加载图像。这是我用来加载图像的方法:

public BufferedImage getCustImg(String path){
    BufferedImage img = null;
    String s = get.getProgramPath();
    path = path.trim();
    String s2 = s + "\\Custom\\" + path + ".png";

    try{
        img = ImageIO.read(this.getClass().getResource(s2));//gets image from file path
    } catch (IOException e) {
        e.printStackTrace();
    }
    return img;
}

这是程序路径方法

public String getProgramPath(){
    File f = new File("./Resources/Sprtes/blank.png");
    String s = f.getAbsolutePath();
    String[] stringArr = s.split("Resources");
    String s2 = stringArr[0];
    s2 = s2.substring(0, s2.length() - 3);
    return s2;
}

当我运行代码时,一切正常,但当我尝试将程序作为.jar文件运行时出现问题。当我使用.jar文件运行它时,图像不会加载。这是自定义文件夹与.jar文件相关的位置:

File Structure

我应该如何更改方法以确保其有效?

1 个答案:

答案 0 :(得分:1)

所以我想通过Luke Lee和Olithegoalie来解决这个问题,

img = ImageIO.read(this.getClass().getResource(s2));如果路径超出了jar,那么我不得不将其更改为

public BufferedImage getCustImg(String path){
    BufferedImage img = null;
    String s = get.getProgramPath();
    path = path.trim();
    String s2 = s + "\\Custom\\" + path + ".png";
    try{
        img = ImageIO.read(new File(s2));
    } catch (IOException e) {
        e.printStackTrace();
    }
    return img;
}