- java.lang.Object
-
- java.awt.image.ConvolveOp
-
- All Implemented Interfaces:
- BufferedImageOp, RasterOp
public class ConvolveOp extends Object implements BufferedImageOp, RasterOp
This class implements a convolution from the source to the destination. Convolution using a convolution kernel is a spatial operation that computes the output pixel from an input pixel by multiplying the kernel with the surround of the input pixel. This allows the output pixel to be affected by the immediate neighborhood in a way that can be mathematically specified with a kernel.This class operates with BufferedImage data in which color components are premultiplied with the alpha component. If the Source BufferedImage has an alpha component, and the color components are not premultiplied with the alpha component, then the data are premultiplied before being convolved. If the Destination has color components which are not premultiplied, then alpha is divided out before storing into the Destination (if alpha is 0, the color components are set to 0). If the Destination has no alpha component, then the resulting alpha is discarded after first dividing it out of the color components.
Rasters are treated as having no alpha channel. If the above treatment of the alpha channel in BufferedImages is not desired, it may be avoided by getting the Raster of a source BufferedImage and using the filter method of this class which works with Rasters.
If a RenderingHints object is specified in the constructor, the color rendering hint and the dithering hint may be used when color conversion is required.
Note that the Source and the Destination may not be the same object.
-
-
Field Summary
Fields Modifier and Type Field and Description static int
EDGE_NO_OP
Pixels at the edge of the source image are copied to the corresponding pixels in the destination without modification.static int
EDGE_ZERO_FILL
Pixels at the edge of the destination image are set to zero.
-
Constructor Summary
Constructors Constructor and Description ConvolveOp(Kernel kernel)
Constructs a ConvolveOp given a Kernel.ConvolveOp(Kernel kernel, int edgeCondition, RenderingHints hints)
Constructs a ConvolveOp given a Kernel, an edge condition, and a RenderingHints object (which may be null).
-
Method Summary
Methods Modifier and Type Method and Description BufferedImage
createCompatibleDestImage(BufferedImage src, ColorModel destCM)
Creates a zeroed destination image with the correct size and number of bands.WritableRaster
createCompatibleDestRaster(Raster src)
Creates a zeroed destination Raster with the correct size and number of bands, given this source.BufferedImage
filter(BufferedImage src, BufferedImage dst)
Performs a convolution on BufferedImages.WritableRaster
filter(Raster src, WritableRaster dst)
Performs a convolution on Rasters.Rectangle2D
getBounds2D(BufferedImage src)
Returns the bounding box of the filtered destination image.Rectangle2D
getBounds2D(Raster src)
Returns the bounding box of the filtered destination Raster.int
getEdgeCondition()
Returns the edge condition.Kernel
getKernel()
Returns the Kernel.Point2D
getPoint2D(Point2D srcPt, Point2D dstPt)
Returns the location of the destination point given a point in the source.RenderingHints
getRenderingHints()
Returns the rendering hints for this op.
-
-
-
Field Detail
-
EDGE_ZERO_FILL
public static final int EDGE_ZERO_FILL
Pixels at the edge of the destination image are set to zero. This is the default.- See Also:
- Constant Field Values
-
EDGE_NO_OP
public static final int EDGE_NO_OP
Pixels at the edge of the source image are copied to the corresponding pixels in the destination without modification.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ConvolveOp
public ConvolveOp(Kernel kernel, int edgeCondition, RenderingHints hints)
Constructs a ConvolveOp given a Kernel, an edge condition, and a RenderingHints object (which may be null).- Parameters:
kernel
- the specifiedKernel
edgeCondition
- the specified edge conditionhints
- the specifiedRenderingHints
object- See Also:
Kernel
,EDGE_NO_OP
,EDGE_ZERO_FILL
,RenderingHints
-
ConvolveOp
public ConvolveOp(Kernel kernel)
Constructs a ConvolveOp given a Kernel. The edge condition will be EDGE_ZERO_FILL.- Parameters:
kernel
- the specifiedKernel
- See Also:
Kernel
,EDGE_ZERO_FILL
-
-
Method Detail
-
getEdgeCondition
public int getEdgeCondition()
Returns the edge condition.- Returns:
- the edge condition of this
ConvolveOp
. - See Also:
EDGE_NO_OP
,EDGE_ZERO_FILL
-
getKernel
public final Kernel getKernel()
Returns the Kernel.- Returns:
- the
Kernel
of thisConvolveOp
.
-
filter
public final BufferedImage filter(BufferedImage src, BufferedImage dst)
Performs a convolution on BufferedImages. Each component of the source image will be convolved (including the alpha component, if present). If the color model in the source image is not the same as that in the destination image, the pixels will be converted in the destination. If the destination image is null, a BufferedImage will be created with the source ColorModel. The IllegalArgumentException may be thrown if the source is the same as the destination.- Specified by:
filter
in interfaceBufferedImageOp
- Parameters:
src
- the sourceBufferedImage
to filterdst
- the destinationBufferedImage
for the filteredsrc
- Returns:
- the filtered
BufferedImage
- Throws:
NullPointerException
- ifsrc
isnull
IllegalArgumentException
- ifsrc
equalsdst
ImagingOpException
- ifsrc
cannot be filtered
-
filter
public final WritableRaster filter(Raster src, WritableRaster dst)
Performs a convolution on Rasters. Each band of the source Raster will be convolved. The source and destination must have the same number of bands. If the destination Raster is null, a new Raster will be created. The IllegalArgumentException may be thrown if the source is the same as the destination.- Specified by:
filter
in interfaceRasterOp
- Parameters:
src
- the sourceRaster
to filterdst
- the destinationWritableRaster
for the filteredsrc
- Returns:
- the filtered
WritableRaster
- Throws:
NullPointerException
- ifsrc
isnull
ImagingOpException
- ifsrc
anddst
do not have the same number of bandsImagingOpException
- ifsrc
cannot be filteredIllegalArgumentException
- ifsrc
equalsdst
-
createCompatibleDestImage
public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM)
Creates a zeroed destination image with the correct size and number of bands. If destCM is null, an appropriate ColorModel will be used.- Specified by:
createCompatibleDestImage
in interfaceBufferedImageOp
- Parameters:
src
- Source image for the filter operation.destCM
- ColorModel of the destination. Can be null.- Returns:
- a destination
BufferedImage
with the correct size and number of bands.
-
createCompatibleDestRaster
public WritableRaster createCompatibleDestRaster(Raster src)
Creates a zeroed destination Raster with the correct size and number of bands, given this source.- Specified by:
createCompatibleDestRaster
in interfaceRasterOp
- Parameters:
src
- the sourceRaster
- Returns:
- a
WritableRaster
that is compatible withsrc
-
getBounds2D
public final Rectangle2D getBounds2D(BufferedImage src)
Returns the bounding box of the filtered destination image. Since this is not a geometric operation, the bounding box does not change.- Specified by:
getBounds2D
in interfaceBufferedImageOp
- Parameters:
src
- TheBufferedImage
to be filtered- Returns:
- The
Rectangle2D
representing the destination image's bounding box.
-
getBounds2D
public final Rectangle2D getBounds2D(Raster src)
Returns the bounding box of the filtered destination Raster. Since this is not a geometric operation, the bounding box does not change.- Specified by:
getBounds2D
in interfaceRasterOp
- Parameters:
src
- the sourceRaster
- Returns:
- a
Rectangle2D
that is the bounding box of theRaster
resulting from the filtering operation.
-
getPoint2D
public final Point2D getPoint2D(Point2D srcPt, Point2D dstPt)
Returns the location of the destination point given a point in the source. If dstPt is non-null, it will be used to hold the return value. Since this is not a geometric operation, the srcPt will equal the dstPt.- Specified by:
getPoint2D
in interfaceBufferedImageOp
- Specified by:
getPoint2D
in interfaceRasterOp
- Parameters:
srcPt
- thePoint2D
that represents the point in the source imagedstPt
- ThePoint2D
in which to store the result- Returns:
- The
Point2D
in the destination image that corresponds to the specified point in the source image.
-
getRenderingHints
public final RenderingHints getRenderingHints()
Returns the rendering hints for this op.- Specified by:
getRenderingHints
in interfaceBufferedImageOp
- Specified by:
getRenderingHints
in interfaceRasterOp
- Returns:
- The
RenderingHints
object for thisBufferedImageOp
. Returns null if no hints have been set.
-
-
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 11/06/2005 gemaakt, de laatste keer de 04/03/2020 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/java-api-rf-java/awt/image/convolveop.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.
Referenties
Deze verwijzingen en links verwijzen naar documenten die geraadpleegd zijn tijdens het schrijven van deze pagina, of die aanvullende informatie kunnen geven, maar de auteurs van deze bronnen kunnen niet verantwoordelijk worden gehouden voor de inhoud van deze pagina.
De auteur Deze site is als enige verantwoordelijk voor de manier waarop de verschillende concepten, en de vrijheden die met de referentiewerken worden genomen, hier worden gepresenteerd. Vergeet niet dat u meerdere broninformatie moet doorgeven om het risico op fouten te verkleinen.