Java/Java
Java Object Converting :: Image to BufferedImage
bboks.net
2007. 11. 24. 17:33
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.image.BufferedImage;
import java.awt.image.VolatileImage;
import javax.swing.ImageIcon;
public class BufferedImageConverter {
public static BufferedImage toBufferedImage(Image input) {
if(input instanceof BufferedImage)
return (BufferedImage)input;
if(input instanceof VolatileImage)
return ((VolatileImage)input).getSnapshot();
//too lazy to use MediaTracker directly:
ImageIcon imageIcon = new ImageIcon(input);
if(imageIcon.getImageLoadStatus() != MediaTracker.COMPLETE)
throw new IllegalArgumentException("Can't load image");
input = imageIcon.getImage();
int w = input.getWidth(null);
int h = input.getHeight(null);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
BufferedImage output = gc.createCompatibleImage(w, h);
//What about transparency? This code assumes it's OPAQUE,
//but you can interrogate the image's source for its ColorModel
Graphics2D g = output.createGraphics();
g.drawImage(input, 0, 0, null);
g.dispose();
return output;
}
}