Creating a Buffered Image
A buffered image is a type of image whose pixels can be modified. For
example, you can draw on a buffered image and then draw the resulting
buffered image on the screen or save it to a file. A buffered image
supports many formats for storing pixels. Although a buffered image of
any format can be drawn on the screen, it is best to choose a format
that is the most compatible with the screen to allow efficient
drawing. This example demonstrates several ways of creating a
buffered image.
If the buffered image will not be drawn, it can simply be
constructed with a specific format; TYPE_INT_RGB and
TYPE_INT_ARGB are typically used. See BufferedImage for a
list of available formats.
See also Creating a Buffered Image from an Image.
These examples create buffered images that are compatible with the screen:
A screen compatible buffered image can also be created from a graphics context:
One last way of creating a buffered image is using
Component.createImage(). This method can be used only if the
component is visible on the screen. Also, this method returns
buffered images that do not support transparent pixels.
int width = 100;
int height = 100;
// Create buffered image that does not support transparency
BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// Create a buffered image that supports transparency
bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
// Create an image that does not support transparency
bimage = gc.createCompatibleImage(width, height, Transparency.OPAQUE);
// Create an image that supports transparent pixels
bimage = gc.createCompatibleImage(width, height, Transparency.BITMASK);
// Create an image that supports arbitrary levels of transparency
bimage = gc.createCompatibleImage(width, height, Transparency.TRANSLUCENT);
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
int width = 100;
int height = 100;
// Create an image that does not support transparency
BufferedImage bimage = g2d.getDeviceConfiguration().createCompatibleImage(
width, height, Transparency.OPAQUE);
// Create an image that supports transparent pixels
bimage = g2d.getDeviceConfiguration().createCompatibleImage(
width, height, Transparency.BITMASK);
// Create an image that supports arbitrary levels of transparency
bimage = g2d.getDeviceConfiguration().createCompatibleImage(
width, height, Transparency.TRANSLUCENT);
}
BufferedImage bimage = (BufferedImage)component.createImage(width, height);
if (bimage == null) {
// The component is not visible on the screen
}
Post a comment