Flying Saucer Project Release ${app.version}

org.xhtmlrenderer.util
Class ImageUtil

java.lang.Object
  extended by org.xhtmlrenderer.util.ImageUtil

public class ImageUtil
extends java.lang.Object

Static utility methods for working with images. Meant to suggest "best practices" for the most straightforward cases of working with images.

Author:
pwright

Constructor Summary
ImageUtil()
           
 
Method Summary
static void clearImage(java.awt.image.BufferedImage image)
          Sets the background of the image to white.
static void clearImage(java.awt.image.BufferedImage image, java.awt.Color bgColor)
          Sets the background of the image to the specified color
static java.awt.image.BufferedImage convertToBufferedImage(java.awt.Image awtImg, int type)
          Utility method to convert an AWT Image to a BufferedImage.
static java.awt.image.BufferedImage createCompatibleBufferedImage(int width, int height)
          Creates a BufferedImage compatible with the local graphics environment; this is a helper method for a common process and just sets up and calls GraphicsConfiguration.createCompatibleImage(int,int,int).
static java.awt.image.BufferedImage createCompatibleBufferedImage(int width, int height, int biType)
          Helper method to instantiate new BufferedImages; if the graphics environment is actually connected to real screen devices (e.g.
static java.awt.Image createTransparentImage(int width, int height)
           
static java.awt.image.BufferedImage getScaledInstance(java.awt.image.BufferedImage orgImage, int targetWidth, int targetHeight)
          Scales an image to the requested width and height, assuming these are both >= 1; size given in pixels.
static java.awt.image.BufferedImage getScaledInstance(ScalingOptions opt, java.awt.image.BufferedImage orgImage)
          Scales an image to the requested width and height, assuming these are both >= 1; size given in pixels.
static java.util.List scaleMultiple(ScalingOptions opt, java.awt.image.BufferedImage img, java.util.List dimensions)
          Scales one image to multiple dimensions, using the same ScalingOptions for each.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ImageUtil

public ImageUtil()
Method Detail

clearImage

public static void clearImage(java.awt.image.BufferedImage image,
                              java.awt.Color bgColor)
Sets the background of the image to the specified color

Parameters:
image - the image
bgColor - the color

clearImage

public static void clearImage(java.awt.image.BufferedImage image)
Sets the background of the image to white.

Parameters:
image - the image

createCompatibleBufferedImage

public static java.awt.image.BufferedImage createCompatibleBufferedImage(int width,
                                                                         int height,
                                                                         int biType)
Helper method to instantiate new BufferedImages; if the graphics environment is actually connected to real screen devices (e.g. not in headless mode), the image will be compatible with the screen device allowing for best performance. In a headless environment, simply creates a new BufferedImage. For non-headless environments, this just sets up and calls GraphicsConfiguration.createCompatibleImage(int,int,int). The image will not have anything drawn to it, not even a white background; you must do this yourself. The #clearBackground(BufferedImage) method will do this for you if you like.

Parameters:
width - Target width for the image
height - Target height for the image
biType - Value from the BufferedImage class; see docs for BufferedImage.BufferedImage(int,int,int). The actual type used will be the type specified in this parameter, if in headless mode, or the type most compatible with the screen, if in non-headless more.
Returns:
A BufferedImage compatible with the screen (best fit).

createCompatibleBufferedImage

public static java.awt.image.BufferedImage createCompatibleBufferedImage(int width,
                                                                         int height)
Creates a BufferedImage compatible with the local graphics environment; this is a helper method for a common process and just sets up and calls GraphicsConfiguration.createCompatibleImage(int,int,int). The image will support transparent pixels.

Parameters:
width - Target width for the image
height - Target height for the image
Returns:
A BufferedImage compatible with the screen (best fit) supporting transparent pixels.

getScaledInstance

public static java.awt.image.BufferedImage getScaledInstance(ScalingOptions opt,
                                                             java.awt.image.BufferedImage orgImage)
Scales an image to the requested width and height, assuming these are both >= 1; size given in pixels. If either width or height is <=0, the current image width or height will be used. This method assumes that, at the moment the method is called, the width and height of the image are available; it won't wait for them. Therefore, the method should be called once the image has completely loaded and not before.

Override this method in a subclass to optimize image scaling operations; note that the legacy Image.getScaledInstance(int,int,int) is considered to perform poorly compared to more recent developed techniques.

For a discussion of the options from a member of the Java2D team, see http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

Parameters:
orgImage - The image to scale
Returns:
The scaled image instance.

getScaledInstance

public static java.awt.image.BufferedImage getScaledInstance(java.awt.image.BufferedImage orgImage,
                                                             int targetWidth,
                                                             int targetHeight)
Scales an image to the requested width and height, assuming these are both >= 1; size given in pixels. If either width or height is <=0, the current image width or height will be used. This method assumes y that, at the moment the method is called, the width and height of the image are available; it won't wait for them. Therefore, the method should be called once the image has completely loaded and not before.

Override this method in a subclass to optimize image scaling operations; note that the legacy Image.getScaledInstance(int,int,int) is considered to perform poorly compared to more recent developed techniques.

For a discussion of the options from a member of the Java2D team, see http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

Parameters:
orgImage - The image to scale
targetWidth - The target width in pixels
targetHeight - The target height in pixels
Returns:
The scaled image instance.

scaleMultiple

public static java.util.List scaleMultiple(ScalingOptions opt,
                                           java.awt.image.BufferedImage img,
                                           java.util.List dimensions)
Scales one image to multiple dimensions, using the same ScalingOptions for each. The method follows the same process for scaling as #getScaledInstance(ScalingOptions,java.awt.Image).

Parameters:
opt - Options to apply to control scaling process.
img - The original image to scale
dimensions - List of dimensions to scale to; one output image will be produced for each dimension. Will not check for duplicate dimensions.
Returns:
List of buffered images in the given dimensions.

convertToBufferedImage

public static java.awt.image.BufferedImage convertToBufferedImage(java.awt.Image awtImg,
                                                                  int type)
Utility method to convert an AWT Image to a BufferedImage. Size is preserved, BufferedImage is compatible with current display device.

Parameters:
awtImg - image to convert; if already a BufferedImage, returned unmodified
type - the type of BufferedImage to create; see BufferedImage.BufferedImage(int,int,int)
Returns:
BufferedImage with same content.

createTransparentImage

public static java.awt.Image createTransparentImage(int width,
                                                    int height)

Flying Saucer Project Release ${app.version}

Flying Saucer Project Home