Java从jar获取打包文件

时间:2014-02-24 23:12:09

标签: java image jar blur

我已经用图像和其他文件打包了我的JAR,但是对于下面的代码,我想知道如何访问打包的图像。

float[] matrix = {
        0.111f, 0.111f, 0.111f, 
        0.111f, 0.111f, 0.111f, 
        0.111f, 0.111f, 0.111f, 
    };

    BufferedImageOp op = new ConvolveOp( new Kernel(3, 3, matrix) );
    blurredImage = op.filter(sourceImage, destImage);

如果我想要访问图像以模糊,我会如何使用它,但它包装在我的JAR中?

编辑:

    try {
                BufferedImage spritesheet = ImageIO.read(Content.class.getResourceAsStream("/Sprites/Enemies/enemy.gif"));

                float[] matrix = { 0.111f, 0.111f, 0.111f, 
                                   0.111f, 0.111f, 0.111f, 
                                   0.111f, 0.111f, 0.111f, };

                BufferedImageOp op = new ConvolveOp( new Kernel(3, 3, matrix) );
                blurredImage = op.filter(spritesheet, spritesheet);
this.setBackground(blurredImage);
        }catch(Exception e){e.printStackTrace();}

1 个答案:

答案 0 :(得分:0)

我知道你的痛苦。从JAR加载图像是不应该烦人的,但是。对于我最近的一个项目,我最终得到了

BufferedImage spritesheet = ImageIO.read(Content.class.getResourceAsStream("/Images/image_to_blur.gif"));

其中Content是封闭类。使用Eclipse,您可以创建资源文件夹并将所有资产放入其中。

另一种选择:

getClass().getClassLoader().getResourceAsStream("resources/"+location);

另一种选择:

Toolkit tk = Toolkit.getDefaultToolkit();
URL url = getClass().getResource("asset.png");
Image img = tk.createImage(url);
tk.prepareImage(img, -1, -1, null);

修改

好的,要从我的Jar中加载背景图像,然后将其模糊,然后将其设置为我的背景,"你需要做几个步骤。

  1. 使用JFrame设置JPanel JLabel来保存您的图片。
  2. 从JAR加载图片
  3. 模糊图像(这取决于你想要的模糊类型,但我会假设高斯)
  4. JLabel设置为该图像。

    public class wowthisisaclass{
    
    JFrame frame;
    JPanel panel;
    JLabel label;
    
    float[] matrix = {
        0.111f, 0.111f, 0.111f, 
        0.111f, 0.111f, 0.111f, 
        0.111f, 0.111f, 0.111f, 
    };
    
    public wowthisisaclass(){ //Step 1
    JFrame window = new JFrame("Title");
    panel = new JPanel();
    panel.setPreferredSize(new Dimension(500,500));
    
    label = new JLabel((Icon) new ImageIcon(blur(getImage("/path.png"), matrix)));
    
    
    //initpanel
    panel.add(label);
    
    //init frame
    window.add(panel);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setResizable(false);
    window.pack();
    window.setLocationRelativeTo(null);
    window.setVisible(true);
    }
    
    public BufferedImage getImage(String path){ //Step 2
    try {
        return ImageIO.read(wowthisisaclass.class.getResourceAsStream(path));
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
    }
        public BufferedImage blur(BufferedImage src, float[] matrix){ //Step 3
    
        ConvolveOp cop = new ConvolveOp( new Kernel( 3, 3, matrix), ConvolveOp.EDGE_NO_OP, null);
    
        BufferedImage blurredImage = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
        cop.filter( src, blurredImage);
            return blurredImage;
    }
    }
    
  5. 如果您需要任何解释,请询问。 :)