Package com.openhtmltopdf.util
Class ImageUtil
- java.lang.Object
-
- com.openhtmltopdf.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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
ImageUtil.AbstractFastScaler
(package private) static class
ImageUtil.AreaAverageScaler
AWT-style one-step scaling, using area averaging(package private) static class
ImageUtil.FastScaler
Fast but decent scaling(package private) static class
ImageUtil.HighQualityScaler
Step-wise downscaling(package private) static class
ImageUtil.OldScaler
Old AWT-style scaling, poor quality(package private) static interface
ImageUtil.Scaler
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Map<DownscaleQuality,ImageUtil.Scaler>
qual
private static java.util.regex.Pattern
WHITE_SPACE
-
Constructor Summary
Constructors Constructor Description ImageUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description 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, 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.BufferedImage
createTransparentImage(int width, int height)
static byte[]
fromBase64Encoded(java.lang.String b64encoded)
static byte[]
getEmbeddedBase64Image(java.lang.String imageDataUri)
Get the binary content of an embedded base 64 image.private static java.awt.GraphicsConfiguration
getGraphicsConfiguration()
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.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
makeCompatible(java.awt.image.BufferedImage bimg)
-
-
-
Field Detail
-
qual
private static final java.util.Map<DownscaleQuality,ImageUtil.Scaler> qual
-
WHITE_SPACE
private static final java.util.regex.Pattern WHITE_SPACE
-
-
Method Detail
-
makeCompatible
public static java.awt.image.BufferedImage makeCompatible(java.awt.image.BufferedImage bimg)
-
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 callsGraphicsConfiguration.createCompatibleImage(int,int,int)
. The image will not have anything drawn to it, not even a white background; you must do this yourself.- Parameters:
width
- Target width for the imageheight
- Target height for the imagebiType
- Value from theBufferedImage
class; see docs forBufferedImage(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).
-
getGraphicsConfiguration
private static java.awt.GraphicsConfiguration getGraphicsConfiguration()
-
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 legacyImage.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 legacyImage.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 scaletargetWidth
- The target width in pixelstargetHeight
- The target height in pixels- Returns:
- The scaled image instance.
-
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 unmodifiedtype
- the type of BufferedImage to create; seeBufferedImage(int,int,int)
- Returns:
- BufferedImage with same content.
-
createTransparentImage
public static java.awt.image.BufferedImage createTransparentImage(int width, int height)
-
fromBase64Encoded
public static byte[] fromBase64Encoded(java.lang.String b64encoded)
-
getEmbeddedBase64Image
public static byte[] getEmbeddedBase64Image(java.lang.String imageDataUri)
Get the binary content of an embedded base 64 image.- Parameters:
imageDataUri
- URI of the embedded image- Returns:
- The binary content
-
-