Java/Java
Java Image to Buffered Image
bboks.net
2007. 11. 29. 21:29
public 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;
}