Package ca.cgjennings.graphics.filters
Class TrimFilter
- java.lang.Object
-
- ca.cgjennings.graphics.filters.AbstractImageFilter
-
- ca.cgjennings.graphics.filters.TrimFilter
-
- All Implemented Interfaces:
java.awt.image.BufferedImageOp
public final class TrimFilter extends AbstractImageFilter
Automatically crops an image by trimming off edges that fail to satisfy a test. The test is specified by a mask and a condition. Edges are tested one row or column at a time, starting at the image edges and working towards the image center. Each row or column is checked for any pixel whose ARGB value fails to satisfy the statementpixelARGB & mask == condition. Once any pixel in a row or column fails to satisfy the test, trimming along that edge stops.Some example mask and condition values Mask Condition Effect 0xff0000000x00000000Trim transparent (alpha=0) edges 0xffffffff0xffffffffTrim solid white edges 0xffffffff0xff000000Trim solid black edges 0x00ffffff0x00RRGGBBTrim edges with colour RRGGBB, ignoring transparency Since the purpose of this filter is to resize an image in a way that cannot be known before the filter is applied, it behaves differently from a typical filter. The destination image parameter is always ignored. If the trimmed image is smaller than the source image, a new image is created at the trimmed size and returned. If no trimming is required, the source image is returned unchanged.
In-place filtering: This filter may or may not be applied in place; see previous paragraph.
- Since:
- 3.0
- Author:
- Chris Jennings
-
-
Constructor Summary
Constructors Constructor Description TrimFilter()Creates a new filter that trims fully transparent edges off of images.TrimFilter(int mask, int condition)Creates a new trim filter with the specified mask and condition.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.awt.image.BufferedImagefilter(java.awt.image.BufferedImage sourceImage, java.awt.image.BufferedImage ignoredDestination)Filters the image, returning an image with trimmable edges cropped off.-
Methods inherited from class ca.cgjennings.graphics.filters.AbstractImageFilter
clamp, clamp, clamp, clampBoth, createCompatibleDestImage, fA, fB, fG, fR, getARGB, getARGB, getARGBSynch, getBounds2D, getPoint2D, getRenderingHints, iA, iB, iG, iR, setARGB, setARGB, setARGBSynch
-
-
-
-
Constructor Detail
-
TrimFilter
public TrimFilter()
Creates a new filter that trims fully transparent edges off of images. That is, with a mask of0xff000000and a condition of0xff000000.
-
TrimFilter
public TrimFilter(int mask, int condition)Creates a new trim filter with the specified mask and condition.- Parameters:
mask- the mask value for trim testingcondition- the value that masked edges must satisfy to be trimmed
-
-
Method Detail
-
filter
public java.awt.image.BufferedImage filter(java.awt.image.BufferedImage sourceImage, java.awt.image.BufferedImage ignoredDestination)Filters the image, returning an image with trimmable edges cropped off. The destination image is ignored, as described in the class description. If the trim operation would result in an empty image, the filter returnsnull.- Parameters:
sourceImage- the image to trimignoredDestination- this parameter is ignored- Returns:
- a new, trimmed image; or the source image if no edges are
trimmed; or
nullif the entire image is trimmed
-
-