Class TJTransform

All Implemented Interfaces:
Shape, Serializable, Cloneable

public class TJTransform extends Rectangle
Lossless transform parameters
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • NUMOP

      public static final int NUMOP
      The number of lossless transform operations
      See Also:
    • OP_NONE

      public static final int OP_NONE
      Do not transform the position of the image pixels.
      See Also:
    • OP_HFLIP

      public static final int OP_HFLIP
      Flip (mirror) image horizontally. This transform is imperfect if there are any partial MCU blocks on the right edge.
      See Also:
    • OP_VFLIP

      public static final int OP_VFLIP
      Flip (mirror) image vertically. This transform is imperfect if there are any partial MCU blocks on the bottom edge.
      See Also:
    • OP_TRANSPOSE

      public static final int OP_TRANSPOSE
      Transpose image (flip/mirror along upper left to lower right axis). This transform is always perfect.
      See Also:
    • OP_TRANSVERSE

      public static final int OP_TRANSVERSE
      Transverse transpose image (flip/mirror along upper right to lower left axis). This transform is imperfect if there are any partial MCU blocks in the image.
      See Also:
    • OP_ROT90

      public static final int OP_ROT90
      Rotate image clockwise by 90 degrees. This transform is imperfect if there are any partial MCU blocks on the bottom edge.
      See Also:
    • OP_ROT180

      public static final int OP_ROT180
      Rotate image 180 degrees. This transform is imperfect if there are any partial MCU blocks in the image.
      See Also:
    • OP_ROT270

      public static final int OP_ROT270
      Rotate image counter-clockwise by 90 degrees. This transform is imperfect if there are any partial MCU blocks on the right edge.
      See Also:
    • OPT_PERFECT

      public static final int OPT_PERFECT
      This option will cause TJTransformer.transform() to throw an exception if the transform is not perfect. Lossless transforms operate on MCU blocks, whose size depends on the level of chrominance subsampling used. If the image's width or height is not evenly divisible by the MCU block size (see TJ.getMCUWidth(int) and TJ.getMCUHeight(int)), then there will be partial MCU blocks on the right and/or bottom edges. It is not possible to move these partial MCU blocks to the top or left of the image, so any transform that would require that is "imperfect." If this option is not specified, then any partial MCU blocks that cannot be transformed will be left in place, which will create odd-looking strips on the right or bottom edge of the image.
      See Also:
    • OPT_TRIM

      public static final int OPT_TRIM
      This option will discard any partial MCU blocks that cannot be transformed.
      See Also:
    • OPT_CROP

      public static final int OPT_CROP
      This option will enable lossless cropping.
      See Also:
    • OPT_GRAY

      public static final int OPT_GRAY
      This option will discard the color data in the input image and produce a grayscale output image.
      See Also:
    • OPT_NOOUTPUT

      public static final int OPT_NOOUTPUT
      This option will prevent TJTransformer.transform() from outputting a JPEG image for this particular transform. This can be used in conjunction with a custom filter to capture the transformed DCT coefficients without transcoding them.
      See Also:
    • op

      public int op
      Transform operation (one of OP_*)
    • options

      public int options
      Transform options (bitwise OR of one or more of OPT_*)
    • cf

      public TJCustomFilter cf
      Custom filter instance
  • Constructor Details

    • TJTransform

      public TJTransform()
      Create a new lossless transform instance.
    • TJTransform

      public TJTransform(int x, int y, int w, int h, int op, int options, TJCustomFilter cf) throws Exception
      Create a new lossless transform instance with the given parameters.
      Parameters:
      x - the left boundary of the cropping region. This must be evenly divisible by the MCU block width (see TJ.getMCUWidth(int))
      y - the upper boundary of the cropping region. This must be evenly divisible by the MCU block height (see TJ.getMCUHeight(int))
      w - the width of the cropping region. Setting this to 0 is the equivalent of setting it to the width of the source JPEG image - x.
      h - the height of the cropping region. Setting this to 0 is the equivalent of setting it to the height of the source JPEG image - y.
      op - one of the transform operations (OP_*)
      options - the bitwise OR of one or more of the transform options (OPT_*)
      cf - an instance of an object that implements the TJCustomFilter interface, or null if no custom filter is needed
      Throws:
      Exception
    • TJTransform

      public TJTransform(Rectangle r, int op, int options, TJCustomFilter cf) throws Exception
      Create a new lossless transform instance with the given parameters.
      Parameters:
      r - a Rectangle instance that specifies the cropping region. See TJTransform(int, int, int, int, int, int, TJCustomFilter) for more detail.
      op - one of the transform operations (OP_*)
      options - the bitwise OR of one or more of the transform options (OPT_*)
      cf - an instance of an object that implements the TJCustomFilter interface, or null if no custom filter is needed
      Throws:
      Exception