Class TJTransform

  • All Implemented Interfaces:
    java.awt.Shape, java.io.Serializable, java.lang.Cloneable

    public class TJTransform
    extends java.awt.Rectangle
    Lossless transform parameters
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.awt.geom.Rectangle2D

        java.awt.geom.Rectangle2D.Double, java.awt.geom.Rectangle2D.Float
    • Field Summary

      Fields 
      Modifier and Type Field Description
      TJCustomFilter cf
      Custom filter instance
      static int NUMOP
      The number of lossless transform operations
      int op
      Transform operation (one of OP_*)
      static int OP_HFLIP
      Flip (mirror) image horizontally.
      static int OP_NONE
      Do not transform the position of the image pixels.
      static int OP_ROT180
      Rotate image 180 degrees.
      static int OP_ROT270
      Rotate image counter-clockwise by 90 degrees.
      static int OP_ROT90
      Rotate image clockwise by 90 degrees.
      static int OP_TRANSPOSE
      Transpose image (flip/mirror along upper left to lower right axis).
      static int OP_TRANSVERSE
      Transverse transpose image (flip/mirror along upper right to lower left axis).
      static int OP_VFLIP
      Flip (mirror) image vertically.
      static int OPT_ARITHMETIC
      This option will enable arithmetic entropy coding in the JPEG image generated by this particular transform.
      static int OPT_COPYNONE
      This option will prevent TJTransformer.transform() from copying any extra markers (including EXIF and ICC profile data) from the source image to the destination image.
      static int OPT_CROP
      This option will enable lossless cropping.
      static int OPT_GRAY
      This option will discard the color data in the source image and produce a grayscale destination image.
      static int OPT_NOOUTPUT
      This option will prevent TJTransformer.transform() from outputting a JPEG image for this particular transform.
      static int OPT_OPTIMIZE
      This option will enable optimized baseline entropy coding in the JPEG image generated by this particular transform.
      static int OPT_PERFECT
      This option will cause TJTransformer.transform() to throw an exception if the transform is not perfect.
      static int OPT_PROGRESSIVE
      This option will enable progressive entropy coding in the JPEG image generated by this particular transform.
      static int OPT_TRIM
      This option will discard any partial MCU blocks that cannot be transformed.
      int options
      Transform options (bitwise OR of one or more of OPT_*)
      • Fields inherited from class java.awt.Rectangle

        height, width, x, y
      • Fields inherited from class java.awt.geom.Rectangle2D

        OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP
    • Constructor Summary

      Constructors 
      Constructor Description
      TJTransform()
      Create a new lossless transform instance.
      TJTransform​(int x, int y, int w, int h, int op, int options, TJCustomFilter cf)
      Create a new lossless transform instance with the given parameters.
      TJTransform​(java.awt.Rectangle r, int op, int options, TJCustomFilter cf)
      Create a new lossless transform instance with the given parameters.
    • Method Summary

      • Methods inherited from class java.awt.Rectangle

        add, add, add, contains, contains, contains, contains, createIntersection, createUnion, equals, getBounds, getBounds2D, getHeight, getLocation, getSize, getWidth, getX, getY, grow, inside, intersection, intersects, isEmpty, move, outcode, reshape, resize, setBounds, setBounds, setLocation, setLocation, setRect, setSize, setSize, toString, translate, union
      • Methods inherited from class java.awt.geom.Rectangle2D

        add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union
      • Methods inherited from class java.awt.geom.RectangularShape

        clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.awt.Shape

        contains, contains, contains, contains, getPathIterator, getPathIterator, intersects, intersects
    • Field Detail

      • NUMOP

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

        public static final int OP_NONE
        Do not transform the position of the image pixels.
        See Also:
        Constant Field Values
      • 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:
        OPT_PERFECT, Constant Field Values
      • 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:
        OPT_PERFECT, Constant Field Values
      • 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:
        OPT_PERFECT, Constant Field Values
      • 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:
        OPT_PERFECT, Constant Field Values
      • 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:
        OPT_PERFECT, Constant Field Values
      • 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:
        OPT_PERFECT, Constant Field Values
      • 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, Constant Field Values
      • 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() and TJ.getMCUHeight()), 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:
        Constant Field Values
      • OPT_TRIM

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

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

        public static final int OPT_GRAY
        This option will discard the color data in the source image and produce a grayscale destination image.
        See Also:
        Constant Field Values
      • 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:
        Constant Field Values
      • OPT_PROGRESSIVE

        public static final int OPT_PROGRESSIVE
        This option will enable progressive entropy coding in the JPEG image generated by this particular transform. Progressive entropy coding will generally improve compression relative to baseline entropy coding (the default), but it will reduce decompression performance considerably. Can be combined with OPT_ARITHMETIC. Implies OPT_OPTIMIZE unless OPT_ARITHMETIC is also specified.
        See Also:
        Constant Field Values
      • OPT_COPYNONE

        public static final int OPT_COPYNONE
        This option will prevent TJTransformer.transform() from copying any extra markers (including EXIF and ICC profile data) from the source image to the destination image.
        See Also:
        Constant Field Values
      • OPT_ARITHMETIC

        public static final int OPT_ARITHMETIC
        This option will enable arithmetic entropy coding in the JPEG image generated by this particular transform. Arithmetic entropy coding will generally improve compression relative to Huffman entropy coding (the default), but it will reduce decompression performance considerably. Can be combined with OPT_PROGRESSIVE.
        See Also:
        Constant Field Values
      • OPT_OPTIMIZE

        public static final int OPT_OPTIMIZE
        This option will enable optimized baseline entropy coding in the JPEG image generated by this particular transform. Optimized baseline entropy coding will improve compression slightly (generally 5% or less.)
        See Also:
        Constant Field Values
      • op

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

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

      • 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)
        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())
        y - the upper boundary of the cropping region. This must be evenly divisible by the MCU block height (see TJ.getMCUHeight())
        w - the width of the cropping region. Setting this to 0 is the equivalent of setting it to (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 (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
      • TJTransform

        public TJTransform​(java.awt.Rectangle r,
                           int op,
                           int options,
                           TJCustomFilter cf)
        Create a new lossless transform instance with the given parameters.
        Parameters:
        r - a java.awt.Rectangle instance that specifies the cropping region. See TJTransform(int, int, int, int, int, int, TJCustomFilter) for more details.
        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