Class StackBlurFilter

All Implemented Interfaces:
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.

  • Field Details

    • radius

      private final int radius
    • iterations

      private final int iterations
  • Constructor Details

    • 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 Details

    • 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 BufferedImage filter(BufferedImage src, BufferedImage dst)
      Specified by:
      filter in interface BufferedImageOp
      Specified by:
      filter in class AbstractFilter