Class ImageUtil
- Version:
- $Id: common/common-image/src/main/java/com/twelvemonkeys/image/ImageUtil.java#3 $
- Author:
- Harald Kuhr, last modified by $Author: haku $
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Default color selectionstatic final int
Prioritize speedstatic final int
Prioritize qualitystatic final int
Java default ditherstatic final int
Error diffusion ditherstatic final int
Error diffusion dither with alternating scansstatic final int
No ditherstatic final int
Alias forConvolveOp.EDGE_NO_OP
.static final int
Adds a border to the image while convolving.static final int
Adds a border to the image while convolving.static final int
Alias forConvolveOp.EDGE_ZERO_FILL
.static final int
static final int
protected static final AffineTransform
protected static final Point
static final int
static final int
static final int
static final int
Convert alpha to bitmaskstatic final int
Default transparency (none)static final int
Discard any alpha informationprotected static final int
Keep original alpha (not supported yet) -
Method Summary
Modifier and TypeMethodDescriptionstatic BufferedImage
accelerate
(Image pImage) Tries to use H/W-accelerated code for an image for display purposes.static BufferedImage
accelerate
(Image pImage, GraphicsConfiguration pConfiguration) Tries to use H/W-accelerated code for an image for display purposes.static Color
Blends two colors half and half, to create a tone in between.static Color
Blends two colors, controlled by the blending factor.static BufferedImage
blur
(BufferedImage pOriginal) Creates a blurred version of the given image.static BufferedImage
blur
(BufferedImage pOriginal, float pRadius) Creates a blurred version of the given image.static Image
brightness
(Image pOriginal, float pAmount) Changes the brightness of the original image.static Image
Adds contraststatic Image
Changes the contrast of the imagestatic BufferedImage
convolve
(BufferedImage pOriginal, Kernel pKernel, int pEdgeOperation) Convolves an image, using a convolution matrix.static BufferedImage
createClear
(int pWidth, int pHeight, int pType, Color pBackground) Creates a clear image with the given background color.static BufferedImage
createClear
(int pWidth, int pHeight, Color pBackground) Creates a clear image with the given background color.static BufferedImage
createCopy
(BufferedImage pImage) Creates a deep copy of the given image.static BufferedImage
createFlipped
(Image pImage, int pAxis) Creates a flipped version of the given image.static BufferedImage
createIndexed
(Image pImage) Creates an indexed version of the given image (aBufferedImage
with anIndexColorModel
.static BufferedImage
createIndexed
(Image pImage, int pColors, Color pMatte, int pHints) Creates an indexed version of the given image (aBufferedImage
with anIndexColorModel
.static BufferedImage
createIndexed
(Image pImage, IndexColorModel pColors, Color pMatte, int pHints) Creates an indexed version of the given image (aBufferedImage
with anIndexColorModel
.static BufferedImage
createIndexed
(Image pImage, Image pColors, Color pMatte, int pHints) Creates an indexed version of the given image (aBufferedImage
with anIndexColorModel
.static BufferedImage
createResampled
(BufferedImage pImage, int pWidth, int pHeight, int pHints) Creates a scaled instance of the givenBufferedImage
.static BufferedImage
createResampled
(RenderedImage pImage, int pWidth, int pHeight, int pHints) Creates a scaled instance of the givenRenderedImage
, and converts it to aBufferedImage
if needed.static BufferedImage
createResampled
(Image pImage, int pWidth, int pHeight, int pHints) Creates a scaled instance of the givenImage
, and converts it to aBufferedImage
if needed.static BufferedImage
createRotated
(Image pImage, double pAngle) Rotates the image to the given angle.static BufferedImage
createRotated
(Image pImage, int pDirection) Rotates the image 90 degrees, clockwise (aka "rotate right"), counter-clockwise (aka "rotate left") or 180 degrees, depending on thepDirection
argument.static BufferedImage
createScaled
(Image pImage, int pWidth, int pHeight, int pHints) Creates a scaled instance of the givenImage
, and converts it to aBufferedImage
if needed.static Color
createTranslucent
(Color pColor, int pTransparency) Creates a translucent version of the given color.static BufferedImage
createTransparent
(int pWidth, int pHeight) Creates a transparent image.static BufferedImage
createTransparent
(int pWidth, int pHeight, int pType) Creates a transparent image.static Image
filter
(Image pOriginal, ImageFilter pFilter) Filters an image, using the givenImageFilter
.static int
Gets the height of an Image.static IndexColorModel
getIndexColorModel
(Image pImage, int pColors, int pHints) Extracts anIndexColorModel
from the given image.static int
Gets the width of an Image.static Image
Converts an image to grayscale.static boolean
hasTransparentPixels
(RenderedImage pImage, boolean pFast) Tests whether the image has any transparent or semi-transparent pixels.static BufferedImage
sharpen
(BufferedImage pOriginal) Sharpens an image using a convolution matrix.static BufferedImage
sharpen
(BufferedImage pOriginal, float pAmount) Sharpens an image using a convolution matrix.static BufferedImage
toBuffered
(Image pOriginal) Converts theImage
to aBufferedImage
.static BufferedImage
toBuffered
(BufferedImage pOriginal, int pType) Converts theBufferedImage
to aBufferedImage
of the given type.static BufferedImage
toBuffered
(RenderedImage pOriginal) Converts theRenderedImage
to aBufferedImage
.static BufferedImage
toBuffered
(RenderedImage pOriginal, int pType) Converts theRenderedImage
to aBufferedImage
of the given type.static BufferedImage
toBuffered
(Image pOriginal, int pType) Converts theImage
to aBufferedImage
of the given type.static boolean
waitForImage
(Image pImage) Waits for an image to load completely.static boolean
waitForImage
(Image pImage, long pTimeOut) Waits for an image to load completely.static boolean
waitForImages
(Image[] pImages) Waits for a number of images to load completely.static boolean
waitForImages
(Image[] pImages, long pTimeOut) Waits for a number of images to load completely.
-
Field Details
-
ROTATE_90_CCW
public static final int ROTATE_90_CCW- See Also:
-
ROTATE_90_CW
public static final int ROTATE_90_CW- See Also:
-
ROTATE_180
public static final int ROTATE_180- See Also:
-
FLIP_VERTICAL
public static final int FLIP_VERTICAL- See Also:
-
FLIP_HORIZONTAL
public static final int FLIP_HORIZONTAL- See Also:
-
EDGE_ZERO_FILL
public static final int EDGE_ZERO_FILLAlias forConvolveOp.EDGE_ZERO_FILL
. -
EDGE_NO_OP
public static final int EDGE_NO_OPAlias forConvolveOp.EDGE_NO_OP
. -
EDGE_REFLECT
public static final int EDGE_REFLECTAdds a border to the image while convolving. The border will reflect the edges of the original image. This is usually a good default. Note that while this mode typically provides better quality than the standard modesEDGE_ZERO_FILL
andEDGE_NO_OP
, it does so at the expense of higher memory consumption and considerable more computation. -
EDGE_WRAP
public static final int EDGE_WRAPAdds a border to the image while convolving. The border will wrap the edges of the original image. This is usually the best choice for tiles. Note that while this mode typically provides better quality than the standard modesEDGE_ZERO_FILL
andEDGE_NO_OP
, it does so at the expense of higher memory consumption and considerable more computation. -
DITHER_DEFAULT
public static final int DITHER_DEFAULTJava default dither- See Also:
-
DITHER_NONE
public static final int DITHER_NONENo dither- See Also:
-
DITHER_DIFFUSION
public static final int DITHER_DIFFUSIONError diffusion dither- See Also:
-
DITHER_DIFFUSION_ALTSCANS
public static final int DITHER_DIFFUSION_ALTSCANSError diffusion dither with alternating scans- See Also:
-
COLOR_SELECTION_DEFAULT
public static final int COLOR_SELECTION_DEFAULTDefault color selection- See Also:
-
COLOR_SELECTION_FAST
public static final int COLOR_SELECTION_FASTPrioritize speed- See Also:
-
COLOR_SELECTION_QUALITY
public static final int COLOR_SELECTION_QUALITYPrioritize quality- See Also:
-
TRANSPARENCY_DEFAULT
public static final int TRANSPARENCY_DEFAULTDefault transparency (none)- See Also:
-
TRANSPARENCY_OPAQUE
public static final int TRANSPARENCY_OPAQUEDiscard any alpha information- See Also:
-
TRANSPARENCY_BITMASK
public static final int TRANSPARENCY_BITMASKConvert alpha to bitmask- See Also:
-
TRANSPARENCY_TRANSLUCENT
protected static final int TRANSPARENCY_TRANSLUCENTKeep original alpha (not supported yet)- See Also:
-
IDENTITY_TRANSFORM
-
LOCATION_UPPER_LEFT
-
-
Method Details
-
toBuffered
Converts theRenderedImage
to aBufferedImage
. The new image will have the sameColorModel
,Raster
and properties as the original image, if possible.If the image is already a
BufferedImage
, it is simply returned and no conversion takes place.- Parameters:
pOriginal
- the image to convert.- Returns:
- a
BufferedImage
-
toBuffered
Converts theRenderedImage
to aBufferedImage
of the given type.If the image is already a
BufferedImage
of the given type, it is simply returned and no conversion takes place.- Parameters:
pOriginal
- the image to convert.pType
- the type of buffered image- Returns:
- a
BufferedImage
- Throws:
IllegalArgumentException
- ifpOriginal == null
orpType
is not a valid type forBufferedImage
- See Also:
-
toBuffered
Converts theBufferedImage
to aBufferedImage
of the given type. The new image will have the sameColorModel
,Raster
and properties as the original image, if possible.If the image is already a
BufferedImage
of the given type, it is simply returned and no conversion takes place.This method simply invokes
toBuffered((RenderedImage) pOriginal, pType)
.- Parameters:
pOriginal
- the image to convert.pType
- the type of buffered image- Returns:
- a
BufferedImage
- Throws:
IllegalArgumentException
- ifpOriginal == null
or ifpType
is not a valid type forBufferedImage
- See Also:
-
toBuffered
Converts theImage
to aBufferedImage
. The new image will have the sameColorModel
,Raster
and properties as the original image, if possible.If the image is already a
BufferedImage
, it is simply returned and no conversion takes place.- Parameters:
pOriginal
- the image to convert.- Returns:
- a
BufferedImage
- Throws:
IllegalArgumentException
- ifpOriginal == null
ImageConversionException
- if the image cannot be converted
-
createCopy
Creates a deep copy of the given image. The image will have the same color model and raster type, but will not share image (pixel) data with the input image.- Parameters:
pImage
- the image to clone.- Returns:
- a new
BufferedImage
- Throws:
IllegalArgumentException
- ifpImage
isnull
-
toBuffered
Converts theImage
to aBufferedImage
of the given type. The new image will have the sameColorModel
,Raster
and properties as the original image, if possible.If the image is already a
BufferedImage
of the given type, it is simply returned and no conversion takes place.- Parameters:
pOriginal
- the image to convert.pType
- the type of buffered image- Returns:
- a
BufferedImage
- Throws:
IllegalArgumentException
- ifpOriginal == null
or ifpType
is not a valid type forBufferedImage
- See Also:
-
createFlipped
Creates a flipped version of the given image.- Parameters:
pImage
- the image to flippAxis
- the axis to flip around- Returns:
- a new
BufferedImage
-
createRotated
Rotates the image 90 degrees, clockwise (aka "rotate right"), counter-clockwise (aka "rotate left") or 180 degrees, depending on thepDirection
argument.The new image will be completely covered with pixels from the source image.
- Parameters:
pImage
- the source image.pDirection
- the direction, must be eitherROTATE_90_CW
,ROTATE_90_CCW
orROTATE_180
- Returns:
- a new
BufferedImage
-
createRotated
Rotates the image to the given angle. Areas not covered with pixels from the source image will be left transparent, if possible.- Parameters:
pImage
- the source imagepAngle
- the angle of rotation, in radians- Returns:
- a new
BufferedImage
, unlesspAngle == 0.0
-
createScaled
Creates a scaled instance of the givenImage
, and converts it to aBufferedImage
if needed. If the original image is aBufferedImage
the result will have same type and color model. Note that this implies overhead, and is probably not useful for anything butIndexColorModel
images.- Parameters:
pImage
- theImage
to scalepWidth
- width in pixelspHeight
- height in pixelspHints
- scaling ints- Returns:
- a
BufferedImage
- Throws:
NullPointerException
- ifpImage
isnull
.- See Also:
-
createResampled
Creates a scaled instance of the givenImage
, and converts it to aBufferedImage
if needed.- Parameters:
pImage
- theImage
to scalepWidth
- width in pixelspHeight
- height in pixelspHints
- scaling mHints- Returns:
- a
BufferedImage
- Throws:
NullPointerException
- ifpImage
isnull
.- See Also:
-
createResampled
public static BufferedImage createResampled(RenderedImage pImage, int pWidth, int pHeight, int pHints) Creates a scaled instance of the givenRenderedImage
, and converts it to aBufferedImage
if needed.- Parameters:
pImage
- theRenderedImage
to scalepWidth
- width in pixelspHeight
- height in pixelspHints
- scaling mHints- Returns:
- a
BufferedImage
- Throws:
NullPointerException
- ifpImage
isnull
.- See Also:
-
createResampled
public static BufferedImage createResampled(BufferedImage pImage, int pWidth, int pHeight, int pHints) Creates a scaled instance of the givenBufferedImage
.- Parameters:
pImage
- theBufferedImage
to scalepWidth
- width in pixelspHeight
- height in pixelspHints
- scaling mHints- Returns:
- a
BufferedImage
- Throws:
NullPointerException
- ifpImage
isnull
.- See Also:
-
getIndexColorModel
Extracts anIndexColorModel
from the given image.- Parameters:
pImage
- the image to get the color model frompColors
- the maximum number of colors in the resulting color modelpHints
- hints controlling transparency and color selection- Returns:
- the extracted
IndexColorModel
- See Also:
-
createIndexed
Creates an indexed version of the given image (aBufferedImage
with anIndexColorModel
. The resulting image will have a maximum of 256 different colors. Transparent parts of the original will be replaced with solid black. Default (possibly HW accelerated) dither will be used.- Parameters:
pImage
- the image to convert- Returns:
- an indexed version of the given image
-
createIndexed
Creates an indexed version of the given image (aBufferedImage
with anIndexColorModel
.- Parameters:
pImage
- the image to convertpColors
- number of colors in the resulting imagepMatte
- color to replace transparent parts of the original.pHints
- hints controlling dither, transparency and color selection- Returns:
- an indexed version of the given image
- See Also:
-
createIndexed
public static BufferedImage createIndexed(Image pImage, IndexColorModel pColors, Color pMatte, int pHints) Creates an indexed version of the given image (aBufferedImage
with anIndexColorModel
.- Parameters:
pImage
- the image to convertpColors
- theIndexColorModel
to be used in the resulting image.pMatte
- color to replace transparent parts of the original.pHints
- hints controlling dither, transparency and color selection- Returns:
- an indexed version of the given image
- See Also:
-
createIndexed
Creates an indexed version of the given image (aBufferedImage
with anIndexColorModel
.- Parameters:
pImage
- the image to convertpColors
- anImage
used to get colors from. If the image is has anIndexColorModel
, it will be uesd, otherwise anIndexColorModel
is created from the image.pMatte
- color to replace transparent parts of the original.pHints
- hints controlling dither, transparency and color selection- Returns:
- an indexed version of the given image
- See Also:
-
sharpen
Sharpens an image using a convolution matrix. The sharpen kernel used, is defined by the following 3 by 3 matrix:Sharpen Kernel Matrix 0.0 -0.3 0.0 -0.3 2.2 -0.3 0.0 -0.3 0.0 This is the same result returned as
sharpen(pOriginal, 0.3f)
.- Parameters:
pOriginal
- the BufferedImage to sharpen- Returns:
- a new BufferedImage, containing the sharpened image.
-
sharpen
Sharpens an image using a convolution matrix. The sharpen kernel used, is defined by the following 3 by 3 matrix:Sharpen Kernel Matrix 0.0 - pAmount
0.0 - pAmount
4.0 * pAmount
+ 1.0- pAmount
0.0 - pAmount
0.0 - Parameters:
pOriginal
- the BufferedImage to sharpenpAmount
- the amount of sharpening- Returns:
- a BufferedImage, containing the sharpened image.
-
blur
Creates a blurred version of the given image.- Parameters:
pOriginal
- the original image- Returns:
- a new
BufferedImage
with a blurred version of the given image
-
blur
Creates a blurred version of the given image.- Parameters:
pOriginal
- the original imagepRadius
- the amount to blur- Returns:
- a new
BufferedImage
with a blurred version of the given image
-
convolve
Convolves an image, using a convolution matrix.- Parameters:
pOriginal
- the BufferedImage to sharpenpKernel
- the kernelpEdgeOperation
- the edge operation. Must be one ofEDGE_NO_OP
,EDGE_ZERO_FILL
,EDGE_REFLECT
orEDGE_WRAP
- Returns:
- a new BufferedImage, containing the sharpened image.
-
contrast
Adds contrast- Parameters:
pOriginal
- the BufferedImage to add contrast to- Returns:
- an
Image
, containing the contrasted image.
-
contrast
Changes the contrast of the image- Parameters:
pOriginal
- theImage
to changepAmount
- the amount of contrast in the range [-1.0..1.0].- Returns:
- an
Image
, containing the contrasted image.
-
brightness
Changes the brightness of the original image.- Parameters:
pOriginal
- theImage
to changepAmount
- the amount of brightness in the range [-2.0..2.0].- Returns:
- an
Image
-
grayscale
Converts an image to grayscale.- Parameters:
pOriginal
- the image to convert.- Returns:
- a new Image, containing the gray image data.
- See Also:
-
filter
Filters an image, using the givenImageFilter
.- Parameters:
pOriginal
- the original imagepFilter
- the filter to apply- Returns:
- the new
Image
-
accelerate
Tries to use H/W-accelerated code for an image for display purposes. Note that transparent parts of the image might be replaced by solid color. Additional image information not used by the current diplay hardware may be discarded, like extra bith depth etc.- Parameters:
pImage
- anyImage
- Returns:
- a
BufferedImage
-
accelerate
Tries to use H/W-accelerated code for an image for display purposes. Note that transparent parts of the image might be replaced by solid color. Additional image information not used by the current diplay hardware may be discarded, like extra bith depth etc.- Parameters:
pImage
- anyImage
pConfiguration
- theGraphicsConfiguration
to accelerate for- Returns:
- a
BufferedImage
-
createTransparent
Creates a transparent image.- Parameters:
pWidth
- the requested width of the imagepHeight
- the requested height of the image- Returns:
- the new image
- Throws:
IllegalArgumentException
- ifpType
is not a valid type forBufferedImage
-
createTransparent
Creates a transparent image.- Parameters:
pWidth
- the requested width of the imagepHeight
- the requested height of the imagepType
- the type ofBufferedImage
to create- Returns:
- the new image
- Throws:
IllegalArgumentException
- ifpType
is not a valid type forBufferedImage
- See Also:
-
createClear
Creates a clear image with the given background color.- Parameters:
pWidth
- the requested width of the imagepHeight
- the requested height of the imagepBackground
- the background color. The color may be translucent. May benull
, in such case the color is undefined.- Returns:
- the new image
- Throws:
IllegalArgumentException
- ifpType
is not a valid type forBufferedImage
- See Also:
-
createClear
Creates a clear image with the given background color.- Parameters:
pWidth
- the width of the image to createpHeight
- the height of the image to createpType
- the type of image to create (one of the constants fromBufferedImage
orBI_TYPE_ANY
)pBackground
- the background color. The color may be translucent. May benull
, in such case the color is undefined.- Returns:
- the new image
- Throws:
IllegalArgumentException
- ifpType
is not a valid type forBufferedImage
- See Also:
-
getWidth
Gets the width of an Image. This method has the side-effect of completely loading the image.- Parameters:
pImage
- an image.- Returns:
- the width of the image, or -1 if the width could not be determined (i.e. an error occured while waiting for the image to load).
-
getHeight
Gets the height of an Image. This method has the side-effect of completely loading the image.- Parameters:
pImage
- an image.- Returns:
- the height of the image, or -1 if the height could not be determined (i.e. an error occured while waiting for the image to load).
-
waitForImage
Waits for an image to load completely. Will wait forever.- Parameters:
pImage
- an Image object to wait for.- Returns:
- true if the image was loaded successfully, false if an error occured, or the wait was interrupted.
- See Also:
-
waitForImage
Waits for an image to load completely. Will wait the specified time.- Parameters:
pImage
- an Image object to wait for.pTimeOut
- the time to wait, in milliseconds.- Returns:
- true if the image was loaded successfully, false if an error occurred, or the wait was interrupted.
- See Also:
-
waitForImages
Waits for a number of images to load completely. Will wait forever.- Parameters:
pImages
- an array of Image objects to wait for.- Returns:
- true if the images was loaded successfully, false if an error occurred, or the wait was interrupted.
- See Also:
-
waitForImages
Waits for a number of images to load completely. Will wait the specified time.- Parameters:
pImages
- an array of Image objects to wait forpTimeOut
- the time to wait, in milliseconds- Returns:
- true if the images was loaded successfully, false if an error occurred, or the wait was interrupted.
-
hasTransparentPixels
Tests whether the image has any transparent or semi-transparent pixels.- Parameters:
pImage
- the imagepFast
- iftrue
, the method tests maximum 10 x 10 pixels, evenly spaced out in the image.- Returns:
true
if transparent pixels are found, otherwisefalse
.
-
createTranslucent
Creates a translucent version of the given color.- Parameters:
pColor
- the original colorpTransparency
- the transparency level (0 - 255
)- Returns:
- a translucent color
- Throws:
NullPointerException
- ifpColor
isnull
-
blend
Blends two colors half and half, to create a tone in between.- Parameters:
pColor
- color 1pOther
- color 2- Returns:
- a new
Color
-
blend
Blends two colors, controlled by the blending factor. A factor of0.0
will return the first color, a factor of1.0
will return the second.- Parameters:
pColor
- color 1pOther
- color 2pBlendFactor
-[0...1]
- Returns:
- a new
Color
-