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