我已经用图像和其他文件打包了我的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();}
答案 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中加载背景图像,然后将其模糊,然后将其设置为我的背景,"你需要做几个步骤。
JFrame
设置JPanel
JLabel
来保存您的图片。将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;
}
}
如果您需要任何解释,请询问。 :)