I have this code for loading images from within a web start Jar. I'm wondering how good it is and what I can do to make it better.
The last function loadImg is really what I have problems with. I first load the image as an ImageIcon to not raise a security exception. Secondly I draw that Image into a BufferedImage because I can't cast it directly, as it's giving me a ToolkitImage instead of an Image. Updated with information gained from another thread on JGO.
Usage is :
BufferedImage img = ImageLoader.loadImage("data/images/", "test.png");
or
BufferedImage img = ImageLoader.loadImage("test.png");
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import java.awt.Image; import java.awt.image.BufferedImage; import java.util.HashMap; import javax.swing.ImageIcon;
public class ImageLoader { static final HashMap<String, BufferedImage> imgStore = new HashMap<String, BufferedImage>(); static final ClassLoader classLoader = ImageLoader.class.getClassLoader();
static public BufferedImage loadImage(String fileName){ return loadImage("", fileName); } static public BufferedImage loadImage(String folderName, String fileName){ BufferedImage retImg = imgStore.get(fileName); if(retImg == null){ retImg = loadImg(folderName+fileName); imgStore.put(fileName, retImg); } return retImg; }
static private BufferedImage loadImg(String filename) { try{ return ImageIO.read(ImageLoader.class.getResourceAsStream(filename)); }catch(Exception e){ System.out.println("Error loading: "+filename); e.printStackTrace(); } return null; }
} |