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”);
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;
}
}