/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* JavaWorld Library, Copyright 2011 Bryan Chadwick *
* *
* FILE: ./image/FromResource.java *
* *
* This file is part of JavaWorld. *
* *
* JavaWorld is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation, either version *
* 3 of the License, or (at your option) any later version. *
* *
* JavaWorld is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with JavaWorld. If not, see . *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package image;
import java.awt.image.BufferedImage;
import java.util.Hashtable;
import javax.imageio.ImageIO;
/** Represents an image from a JAR resource (an Image file within
* the currently executing JAR). In order to avoid package
* relative path problems, the absolute path of the image
* within the JAR should be used.
*/
public class FromResource extends FromFile{
/** Create an Image from the given file name within a JAR. */
public FromResource(String f){
try{
if(loaded.containsKey(f)){
this.img = loaded.get(f);
}else{
this.img = ImageIO.read(getClass().getResourceAsStream(f));
loaded.put(f, this.img);
}
this.init(this.img);
}catch(java.io.IOException e){
throw new RuntimeException("Error Loading JAR Image resource: \""+f+"\"");
}catch(IllegalArgumentException e){
throw new RuntimeException("JAR Image resource: \""+f+"\" Not Found!");
}
}
/** Store File/Resource Images, to avoid multiple loads, shadows
* FromFile.loaded so that resources and files come
* from different name-spaces. */
protected static Hashtable loaded = new Hashtable();
}