通过BufferedImage从文件路径加载图像
我的Java应用程序有问题,特别是从计算机中的某个位置加载图像时。
在这篇文章之后,我使用BufferedImage
和InputFileStream
来在计算机上加载图像。首先,我将图片(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;
}
}
回答:
getResource
&getResourceAsStream
不适用于文件路径,但适用于相对于代码库的路径。如果代码库为,C:
则可以找到资源的相对路径为/ImageTest/pic2.jpg
。
通过加载文件之间..difference
FileInputStream
和getResourceAsStream
?
一个主要区别是可以getResource..
与Jar内的资源(不再是)一起使用File
。因此FileInputStream
不能
用于访问这种资源。
以上是 通过BufferedImage从文件路径加载图像 的全部内容, 来源链接: utcz.com/qa/417324.html