Class PerspectiveFilter

All Implemented Interfaces:
BufferedImageOp, Cloneable

public class PerspectiveFilter extends TransformFilter
A filter which performs a perspective distortion on an image. Coordinates are treated as if the image was a unit square, i.e. the bottom-right corner of the image is at (1, 1). The filter maps the unit square onto an arbitrary convex quadrilateral or vice versa.
  • Constructor Details

    • PerspectiveFilter

      public PerspectiveFilter()
      Construct a PerspectiveFilter.
    • PerspectiveFilter

      public PerspectiveFilter(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3)
      Construct a PerspectiveFilter.
      Parameters:
      x0 - the new position of the top left corner
      y0 - the new position of the top left corner
      x1 - the new position of the top right corner
      y1 - the new position of the top right corner
      x2 - the new position of the bottom right corner
      y2 - the new position of the bottom right corner
      x3 - the new position of the bottom left corner
      y3 - the new position of the bottom left corner
  • Method Details

    • setClip

      public void setClip(boolean clip)
    • getClip

      public boolean getClip()
    • setCorners

      public void setCorners(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3)
      Set the new positions of the image corners. This is the same as unitSquareToQuad, but the coordinates are in image pixels, not relative to the unit square. This method is provided as a convenience.
      Parameters:
      x0 - the new position of the top left corner
      y0 - the new position of the top left corner
      x1 - the new position of the top right corner
      y1 - the new position of the top right corner
      x2 - the new position of the bottom right corner
      y2 - the new position of the bottom right corner
      x3 - the new position of the bottom left corner
      y3 - the new position of the bottom left corner
    • unitSquareToQuad

      public void unitSquareToQuad(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3)
      Set the transform to map the unit square onto a quadrilateral. When filtering, all coordinates will be scaled by the size of the image.
      Parameters:
      x0 - the new position of the top left corner
      y0 - the new position of the top left corner
      x1 - the new position of the top right corner
      y1 - the new position of the top right corner
      x2 - the new position of the bottom right corner
      y2 - the new position of the bottom right corner
      x3 - the new position of the bottom left corner
      y3 - the new position of the bottom left corner
    • quadToUnitSquare

      public void quadToUnitSquare(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3)
      Set the transform to map a quadrilateral onto the unit square. When filtering, all coordinates will be scaled by the size of the image.
      Parameters:
      x0 - the old position of the top left corner
      y0 - the old position of the top left corner
      x1 - the old position of the top right corner
      y1 - the old position of the top right corner
      x2 - the old position of the bottom right corner
      y2 - the old position of the bottom right corner
      x3 - the old position of the bottom left corner
      y3 - the old position of the bottom left corner
    • filter

      public BufferedImage filter(BufferedImage src, BufferedImage dst)
      Specified by:
      filter in interface BufferedImageOp
      Overrides:
      filter in class TransformFilter
    • transformSpace

      protected void transformSpace(Rectangle rect)
      Description copied from class: TransformFilter
      Forward transform a rectangle. Used to determine the size of the output image.
      Overrides:
      transformSpace in class TransformFilter
      Parameters:
      rect - the rectangle to transform
    • getOriginX

      public float getOriginX()
      Get the origin of the output image. Use this for working out where to draw your new image.
      Returns:
      the X origin.
    • getOriginY

      public float getOriginY()
      Get the origin of the output image. Use this for working out where to draw your new image.
      Returns:
      the Y origin.
    • getBounds2D

      public Rectangle2D getBounds2D(BufferedImage src)
      Specified by:
      getBounds2D in interface BufferedImageOp
      Overrides:
      getBounds2D in class AbstractBufferedImageOp
    • getPoint2D

      public Point2D getPoint2D(Point2D srcPt, Point2D dstPt)
      Specified by:
      getPoint2D in interface BufferedImageOp
      Overrides:
      getPoint2D in class AbstractBufferedImageOp
    • transformInverse

      protected void transformInverse(int x, int y, float[] out)
      Description copied from class: TransformFilter
      Inverse transform a point. This method needs to be overriden by all subclasses.
      Specified by:
      transformInverse in class TransformFilter
      Parameters:
      x - the X position of the pixel in the output image
      y - the Y position of the pixel in the output image
      out - the position of the pixel in the input image
    • toString

      public String toString()
      Overrides:
      toString in class Object