如何从java中的包中加载图像

时间:2014-04-05 19:52:07

标签: java

我通常使用它从同一个包中加载

Image image;
String img = "image.png";
ImageIcon i = new ImageIcon(this.getClass().getResource(img));
image = i.getImage();

如何从为图像指定的包中加载图像?

3 个答案:

答案 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.pngpack包中,请使用PackageResourceLoader.loadImageIcon( "pack/img.png" );