com.jhlabs.image

Class ImageUtils


public abstract class ImageUtils
extends java.lang.Object

A class containing some static utility methods for dealing with BufferedImages.

Method Summary

static BufferedImage
cloneImage(BufferedImage image)
Clones a BufferedImage.
static void
composeThroughMask(Raster src, WritableRaster dst, Raster sel)
Compose src onto dst using the alpha of sel to interpolate between the two.
static BufferedImage
convertImageToARGB(Image image)
Convert an Image into a TYPE_INT_ARGB BufferedImage.
static BufferedImage
createImage(ImageProducer producer)
Cretae a BufferedImage from an ImageProducer.
static int[]
getRGB(BufferedImage image, int x, int y, int width, int height, int[] pixels)
A convenience method for getting ARGB pixels from an image.
static Rectangle
getSelectedBounds(BufferedImage p)
Calculates the bounds of the non-transparent parts of the given image.
static BufferedImage
getSubimage(BufferedImage image, int x, int y, int w, int h)
Returns a *copy* of a subimage of image.
static void
paintCheckedBackground(Component c, Graphics g, int x, int y, int width, int height)
Paint a check pattern, used for a background to indicate image transparency.
static void
setRGB(BufferedImage image, int x, int y, int width, int height, int[] pixels)
A convenience method for setting ARGB pixels in an image.

Method Details

cloneImage

public static BufferedImage cloneImage(BufferedImage image)
Clones a BufferedImage.
Parameters:
image - the image to clone
Returns:
the cloned image

composeThroughMask

public static void composeThroughMask(Raster src,
                                      WritableRaster dst,
                                      Raster sel)
Compose src onto dst using the alpha of sel to interpolate between the two. I can't think of a way to do this using AlphaComposite.
Parameters:
src - the source raster
dst - the destination raster
sel - the mask raster

convertImageToARGB

public static BufferedImage convertImageToARGB(Image image)
Convert an Image into a TYPE_INT_ARGB BufferedImage. If the image is already of this type, the original image is returned unchanged.
Parameters:
image - the image to convert
Returns:
the converted image

createImage

public static BufferedImage createImage(ImageProducer producer)
Cretae a BufferedImage from an ImageProducer.
Parameters:
producer - the ImageProducer
Returns:
a new TYPE_INT_ARGB BufferedImage

getRGB

public static int[] getRGB(BufferedImage image,
                           int x,
                           int y,
                           int width,
                           int height,
                           int[] pixels)
A convenience method for getting ARGB pixels from an image. This tries to avoid the performance penalty of BufferedImage.getRGB unmanaging the image.
Parameters:
image - a BufferedImage object
x - the left edge of the pixel block
y - the right edge of the pixel block
width - the width of the pixel arry
height - the height of the pixel arry
pixels - the array to hold the returned pixels. May be null.
Returns:
the pixels

getSelectedBounds

public static Rectangle getSelectedBounds(BufferedImage p)
Calculates the bounds of the non-transparent parts of the given image.
Parameters:
p - the image
Returns:
the bounds of the non-transparent area

getSubimage

public static BufferedImage getSubimage(BufferedImage image,
                                        int x,
                                        int y,
                                        int w,
                                        int h)
Returns a *copy* of a subimage of image. This avoids the performance problems associated with BufferedImage.getSubimage.
Parameters:
image - the image
x - the x position
y - the y position
w - the width
h - the height
Returns:
the subimage

paintCheckedBackground

public static void paintCheckedBackground(Component c,
                                          Graphics g,
                                          int x,
                                          int y,
                                          int width,
                                          int height)
Paint a check pattern, used for a background to indicate image transparency.
Parameters:
c - the component to draw into
g - the Graphics objects
x - the x position
y - the y position
width - the width
height - the height

setRGB

public static void setRGB(BufferedImage image,
                          int x,
                          int y,
                          int width,
                          int height,
                          int[] pixels)
A convenience method for setting ARGB pixels in an image. This tries to avoid the performance penalty of BufferedImage.setRGB unmanaging the image.
Parameters:
image - a BufferedImage object
x - the left edge of the pixel block
y - the right edge of the pixel block
width - the width of the pixel arry
height - the height of the pixel arry
pixels - the array of pixels to set