通过BufferedImage从文件路径加载图像

我的Java应用程序有问题,特别是从计算机中的某个位置加载图像时。

在这篇文章之后,我使用BufferedImageInputFileStream来在计算机上加载图像。首先,我将图片(pic2.jpg)放入源代码中,并且可以正常工作。但是,如果我将图像放到另一个地方(比如说C:\\ImageTest\pic2.jpg),Java

IDE会向我显示一个IllegalArgumentException

return ImageIO.read(in);

这是代码:

public class MiddlePanel extends JPanel {

private BufferedImage img;

public MiddlePanel(int width) {

//img = getImage("pic2.jpg");

img = getImage("C:\\ImageTest\\pic2.jpg");

this.setPreferredSize(new Dimension(800,460));

}

public void paintComponent(Graphics g) {

// ...

}

private BufferedImage getImage(String filename) {

// This time, you can use an InputStream to load

try {

// Grab the InputStream for the image.

InputStream in = getClass().getResourceAsStream(filename);

// Then read it.

return ImageIO.read(in);

} catch (IOException e) {

System.out.println("The image was not loaded.");

//System.exit(1);

}

return null;

}

}

回答:

getResourcegetResourceAsStream不适用于文件路径,但适用于相对于代码库的路径。如果代码库为,C:则可以找到资源的相对路径为/ImageTest/pic2.jpg

通过加载文件之间..difference FileInputStreamgetResourceAsStream

一个主要区别是可以getResource..与Jar内的资源(不再是)一起使用File。因此FileInputStream不能

用于访问这种资源。

以上是 通过BufferedImage从文件路径加载图像 的全部内容, 来源链接: utcz.com/qa/417324.html

回到顶部