Class StackBlurFilter

  • All Implemented Interfaces:
    java.awt.image.BufferedImageOp

    public class StackBlurFilter
    extends AbstractFilter

    A stack blur filter can be used to create an approximation of a Gaussian blur. The approximation is controlled by the number of times the FastBlurFilter is applied onto the source picture. The default number of iterations, 3, provides a decent compromise between speed and rendering quality.

    The force of the blur can be controlled with a radius and the default radius is 3. Since the blur clamps values on the edges of the source picture, you might need to provide a picture with empty borders to avoid artifacts at the edges. The performance of this filter are independent from the radius.

    Author:
    Romain Guy
    • Constructor Detail

      • StackBlurFilter

        public StackBlurFilter()

        Creates a new blur filter with a default radius of 3 and 3 iterations.

      • StackBlurFilter

        public StackBlurFilter​(int radius)

        Creates a new blur filter with the specified radius and 3 iterations. If the radius is lower than 1, a radius of 1 will be used automatically.

        Parameters:
        radius - the radius, in pixels, of the blur
      • StackBlurFilter

        public StackBlurFilter​(int radius,
                               int iterations)

        Creates a new blur filter with the specified radius. If the radius is lower than 1, a radius of 1 will be used automatically. The number of iterations controls the approximation to a Gaussian blur. If the number of iterations is lower than 1, one iteration will be used automatically.

        Parameters:
        radius - the radius, in pixels, of the blur
        iterations - the number of iterations to approximate a Gaussian blur
    • Method Detail

      • getEffectiveRadius

        public int getEffectiveRadius()

        Returns the effective radius of the stack blur. If the radius of the blur is 1 and the stack iterations count is 3, then the effective blur radius is 1 * 3 = 3.

        Returns:
        the number of iterations times the blur radius
      • getRadius

        public int getRadius()

        Returns the radius used by this filter, in pixels.

        Returns:
        the radius of the blur
      • getIterations

        public int getIterations()

        Returns the number of iterations used to approximate a Gaussian blur.

        Returns:
        the number of iterations used by this blur
      • filter

        public java.awt.image.BufferedImage filter​(java.awt.image.BufferedImage src,
                                                   java.awt.image.BufferedImage dst)
        Specified by:
        filter in interface java.awt.image.BufferedImageOp
        Specified by:
        filter in class AbstractFilter