我通常使用它从同一个包中加载
Image image;
String img = "image.png";
ImageIcon i = new ImageIcon(this.getClass().getResource(img));
image = i.getImage();
如何从为图像指定的包中加载图像?
答案 0 :(得分:2)
你可以尝试任何一个
// Read from same package
ImageIO.read(getClass().getResourceAsStream("c.png"));
// Read from absolute path
ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.png"));
// Read from images folder parallel to src in your project
ImageIO.read(new File("images\\c.jpg"));
使用
ImageIcon icon=new ImageIcon(<any one from above>);
您也可以直接使用BufferedImage
代替ImageIcon
。
有关详细信息,请在此处阅读How to retrieve image from project folder?
答案 1 :(得分:0)
Image image;
String img = "image.png";
ImageIcon i = new ImageIcon(this.getClass().getResource(img));
image = i.getImage();
建议“image.png”与this
所代表的类位于同一个包中
您可以引用位于不同包中的资源的路径
String img = "/path/to/images/image.png";
ImageIcon i = new ImageIcon(this.getClass().getResource(img));
这里重要的概念是要理解路径是类路径的后缀
就个人而言,您应该使用ImageIO
而不是ImageIcon
,除了支持更多格式之外,当出现问题时它会抛出IOException
并保证返回完整加载的图像(当成功的)。
有关详细信息,请参阅How to read images
答案 2 :(得分:0)
您不需要在本地使用(例如&#34;此&#34;):this.getClass().getResource( img );
只需全局使用类加载器:ClassLoader.getSystemResource( path );
我将在下面向您展示我的图书馆功能
public final class PackageResourceLoader {
// load image icon
public static final ImageIcon loadImageIcon( final String path ) {
final URL res = ClassLoader.getSystemResource( path );
return new ImageIcon( res );
}
// load buffered image
public static final BufferedImage loadBufferedImage( final String path ) {
final URL res = ClassLoader.getSystemResource( path );
try { return ImageIO.read( res ); }
catch( final Exception ex ) { return null; }
}
}
如果您的img.png
在pack
包中,请使用PackageResourceLoader.loadImageIcon( "pack/img.png" );