Class TJDecompressor

java.lang.Object
org.libjpegturbo.turbojpeg.TJDecompressor
Direct Known Subclasses:
TJTransformer

public class TJDecompressor extends Object
TurboJPEG decompressor
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private ByteOrder
     
    protected long
     
    protected byte[]
     
    protected int
     
    protected int
     
    protected int
     
    protected int
     
    private static final String
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a TurboJPEG decompresssor instance.
    TJDecompressor(byte[] jpegImage)
    Create a TurboJPEG decompressor instance and associate the JPEG image stored in jpegImage with the newly-created instance.
    TJDecompressor(byte[] jpegImage, int imageSize)
    Create a TurboJPEG decompressor instance and associate the JPEG image of length imageSize bytes stored in jpegImage with the newly-created instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Free the native structures associated with this decompressor instance.
    private void
    decompress(byte[] srcBuf, int size, byte[] dstBuf, int desiredWidth, int pitch, int desiredHeight, int pixelFormat, int flags)
     
    private void
    decompress(byte[] srcBuf, int size, int[] dstBuf, int desiredWidth, int pitch, int desiredHeight, int pixelFormat, int flags)
     
    void
    decompress(byte[] dstBuf, int desiredWidth, int pitch, int desiredHeight, int pixelFormat, int flags)
    Decompress the JPEG source image associated with this decompressor instance and output a decompressed image to the given destination buffer.
    decompress(int desiredWidth, int desiredHeight, int bufferedImageType, int flags)
    Decompress the JPEG source image associated with this decompressor instance and return a BufferedImage instance containing the decompressed image.
    byte[]
    decompress(int desiredWidth, int pitch, int desiredHeight, int pixelFormat, int flags)
    Decompress the JPEG source image associated with this decompressor instance and return a buffer containing the decompressed image.
    void
    decompress(BufferedImage dstImage, int flags)
    Decompress the JPEG source image associated with this decompressor instance and output a decompressed image to the given BufferedImage instance.
    private void
    decompressHeader(byte[] srcBuf, int size)
     
    void
    decompressToYUV(byte[] dstBuf, int flags)
    Decompress the JPEG source image associated with this decompressor instance and output a YUV planar image to the given destination buffer.
    private void
    decompressToYUV(byte[] srcBuf, int size, byte[] dstBuf, int flags)
     
    byte[]
    decompressToYUV(int flags)
    Decompress the JPEG source image associated with this decompressor instance and return a buffer containing a YUV planar image.
    private void
     
    protected void
     
    int
    Returns the height of the JPEG image associated with this decompressor instance.
    byte[]
    Returns the JPEG image buffer associated with this decompressor instance.
    int
    Returns the size of the JPEG image (in bytes) associated with this decompressor instance.
    int
    getScaledHeight(int desiredWidth, int desiredHeight)
    Returns the height of the largest scaled down image that the TurboJPEG decompressor can generate without exceeding the desired image width and height.
    int
    getScaledWidth(int desiredWidth, int desiredHeight)
    Returns the width of the largest scaled down image that the TurboJPEG decompressor can generate without exceeding the desired image width and height.
    int
    Returns the level of chrominance subsampling used in the JPEG image associated with this decompressor instance.
    int
    Returns the width of the JPEG image associated with this decompressor instance.
    private void
     
    void
    setJPEGImage(byte[] jpegImage, int imageSize)
    Associate the JPEG image of length imageSize bytes stored in jpegImage with this decompressor instance.

    Methods inherited from class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • NO_ASSOC_ERROR

      private static final String NO_ASSOC_ERROR
      See Also:
    • handle

      protected long handle
    • jpegBuf

      protected byte[] jpegBuf
    • jpegBufSize

      protected int jpegBufSize
    • jpegWidth

      protected int jpegWidth
    • jpegHeight

      protected int jpegHeight
    • jpegSubsamp

      protected int jpegSubsamp
    • byteOrder

      private ByteOrder byteOrder
  • Constructor Details

    • TJDecompressor

      public TJDecompressor() throws Exception
      Create a TurboJPEG decompresssor instance.
      Throws:
      Exception
    • TJDecompressor

      public TJDecompressor(byte[] jpegImage) throws Exception
      Create a TurboJPEG decompressor instance and associate the JPEG image stored in jpegImage with the newly-created instance.
      Parameters:
      jpegImage - JPEG image buffer (size of the JPEG image is assumed to be the length of the array)
      Throws:
      Exception
    • TJDecompressor

      public TJDecompressor(byte[] jpegImage, int imageSize) throws Exception
      Create a TurboJPEG decompressor instance and associate the JPEG image of length imageSize bytes stored in jpegImage with the newly-created instance.
      Parameters:
      jpegImage - JPEG image buffer
      imageSize - size of the JPEG image (in bytes)
      Throws:
      Exception
  • Method Details

    • setJPEGImage

      public void setJPEGImage(byte[] jpegImage, int imageSize) throws Exception
      Associate the JPEG image of length imageSize bytes stored in jpegImage with this decompressor instance. This image will be used as the source image for subsequent decompress operations.
      Parameters:
      jpegImage - JPEG image buffer
      imageSize - size of the JPEG image (in bytes)
      Throws:
      Exception
    • getWidth

      public int getWidth() throws Exception
      Returns the width of the JPEG image associated with this decompressor instance.
      Returns:
      the width of the JPEG image associated with this decompressor instance
      Throws:
      Exception
    • getHeight

      public int getHeight() throws Exception
      Returns the height of the JPEG image associated with this decompressor instance.
      Returns:
      the height of the JPEG image associated with this decompressor instance
      Throws:
      Exception
    • getSubsamp

      public int getSubsamp() throws Exception
      Returns the level of chrominance subsampling used in the JPEG image associated with this decompressor instance.
      Returns:
      the level of chrominance subsampling used in the JPEG image associated with this decompressor instance
      Throws:
      Exception
    • getJPEGBuf

      public byte[] getJPEGBuf() throws Exception
      Returns the JPEG image buffer associated with this decompressor instance.
      Returns:
      the JPEG image buffer associated with this decompressor instance
      Throws:
      Exception
    • getJPEGSize

      public int getJPEGSize() throws Exception
      Returns the size of the JPEG image (in bytes) associated with this decompressor instance.
      Returns:
      the size of the JPEG image (in bytes) associated with this decompressor instance
      Throws:
      Exception
    • getScaledWidth

      public int getScaledWidth(int desiredWidth, int desiredHeight) throws Exception
      Returns the width of the largest scaled down image that the TurboJPEG decompressor can generate without exceeding the desired image width and height.
      Parameters:
      desiredWidth - desired width (in pixels) of the decompressed image. Setting this to 0 is the same as setting it to the width of the JPEG image (in other words, the width will not be considered when determining the scaled image size.)
      desiredHeight - desired height (in pixels) of the decompressed image. Setting this to 0 is the same as setting it to the height of the JPEG image (in other words, the height will not be considered when determining the scaled image size.)
      Returns:
      the width of the largest scaled down image that the TurboJPEG decompressor can generate without exceeding the desired image width and height
      Throws:
      Exception
    • getScaledHeight

      public int getScaledHeight(int desiredWidth, int desiredHeight) throws Exception
      Returns the height of the largest scaled down image that the TurboJPEG decompressor can generate without exceeding the desired image width and height.
      Parameters:
      desiredWidth - desired width (in pixels) of the decompressed image. Setting this to 0 is the same as setting it to the width of the JPEG image (in other words, the width will not be considered when determining the scaled image size.)
      desiredHeight - desired height (in pixels) of the decompressed image. Setting this to 0 is the same as setting it to the height of the JPEG image (in other words, the height will not be considered when determining the scaled image size.)
      Returns:
      the height of the largest scaled down image that the TurboJPEG decompressor can generate without exceeding the desired image width and height
      Throws:
      Exception
    • decompress

      public void decompress(byte[] dstBuf, int desiredWidth, int pitch, int desiredHeight, int pixelFormat, int flags) throws Exception
      Decompress the JPEG source image associated with this decompressor instance and output a decompressed image to the given destination buffer.
      Parameters:
      dstBuf - buffer that will receive the decompressed image. This buffer should normally be pitch * scaledHeight bytes in size, where scaledHeight can be determined by calling scalingFactor.getScaled(jpegHeight) with one of the scaling factors returned from TJ.getScalingFactors() or by calling getScaledHeight(int, int).
      desiredWidth - desired width (in pixels) of the decompressed image. If the desired image dimensions are smaller than the dimensions of the JPEG image being decompressed, then TurboJPEG will use scaling in the JPEG decompressor to generate the largest possible image that will fit within the desired dimensions. Setting this to 0 is the same as setting it to the width of the JPEG image (in other words, the width will not be considered when determining the scaled image size.)
      pitch - bytes per line of the destination image. Normally, this should be set to scaledWidth * TJ.pixelSize(pixelFormat) if the decompressed image is unpadded, but you can use this to, for instance, pad each line of the decompressed image to a 4-byte boundary. NOTE: scaledWidth can be determined by calling scalingFactor.getScaled(jpegWidth) or by calling getScaledWidth(int, int). Setting this parameter to 0 is the equivalent of setting it to scaledWidth * TJ.pixelSize(pixelFormat).
      desiredHeight - desired height (in pixels) of the decompressed image. If the desired image dimensions are smaller than the dimensions of the JPEG image being decompressed, then TurboJPEG will use scaling in the JPEG decompressor to generate the largest possible image that will fit within the desired dimensions. Setting this to 0 is the same as setting it to the height of the JPEG image (in other words, the height will not be considered when determining the scaled image size.)
      pixelFormat - pixel format of the decompressed image (one of TJ.PF_*)
      flags - the bitwise OR of one or more of TJ.FLAG_*
      Throws:
      Exception
    • decompress

      public byte[] decompress(int desiredWidth, int pitch, int desiredHeight, int pixelFormat, int flags) throws Exception
      Decompress the JPEG source image associated with this decompressor instance and return a buffer containing the decompressed image.
      Parameters:
      desiredWidth - see decompress(byte[], int, int, int, int, int) for description
      pitch - see decompress(byte[], int, int, int, int, int) for description
      desiredHeight - see decompress(byte[], int, int, int, int, int) for description
      pixelFormat - pixel format of the decompressed image (one of TJ.PF_*)
      flags - the bitwise OR of one or more of TJ.FLAG_*
      Returns:
      a buffer containing the decompressed image
      Throws:
      Exception
    • decompressToYUV

      public void decompressToYUV(byte[] dstBuf, int flags) throws Exception
      Decompress the JPEG source image associated with this decompressor instance and output a YUV planar image to the given destination buffer. This method performs JPEG decompression but leaves out the color conversion step, so a planar YUV image is generated instead of an RGB image. The padding of the planes in this image is the same as the images generated by TJCompressor.encodeYUV(byte[], int). Note that, if the width or height of the image is not an even multiple of the MCU block size (see TJ.getMCUWidth(int) and TJ.getMCUHeight(int)), then an intermediate buffer copy will be performed within TurboJPEG.
      Parameters:
      dstBuf - buffer that will receive the YUV planar image. Use TJ.bufSizeYUV(int, int, int) to determine the appropriate size for this buffer based on the image width, height, and level of chrominance subsampling.
      flags - the bitwise OR of one or more of TJ.FLAG_*
      Throws:
      Exception
    • decompressToYUV

      public byte[] decompressToYUV(int flags) throws Exception
      Decompress the JPEG source image associated with this decompressor instance and return a buffer containing a YUV planar image. See decompressToYUV(byte[], int) for more detail.
      Parameters:
      flags - the bitwise OR of one or more of TJ.FLAG_*
      Returns:
      a buffer containing a YUV planar image
      Throws:
      Exception
    • decompress

      public void decompress(BufferedImage dstImage, int flags) throws Exception
      Decompress the JPEG source image associated with this decompressor instance and output a decompressed image to the given BufferedImage instance.
      Parameters:
      dstImage - a BufferedImage instance that will receive the decompressed image
      flags - the bitwise OR of one or more of TJ.FLAG_*
      Throws:
      Exception
    • decompress

      public BufferedImage decompress(int desiredWidth, int desiredHeight, int bufferedImageType, int flags) throws Exception
      Decompress the JPEG source image associated with this decompressor instance and return a BufferedImage instance containing the decompressed image.
      Parameters:
      desiredWidth - see decompress(byte[], int, int, int, int, int) for description
      desiredHeight - see decompress(byte[], int, int, int, int, int) for description
      bufferedImageType - the image type of the newly-created BufferedImage instance (for instance, BufferedImage.TYPE_INT_RGB)
      flags - the bitwise OR of one or more of TJ.FLAG_*
      Returns:
      a BufferedImage instance containing the decompressed image
      Throws:
      Exception
    • close

      public void close() throws Exception
      Free the native structures associated with this decompressor instance.
      Throws:
      Exception
    • finalize

      protected void finalize() throws Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable
    • init

      private void init() throws Exception
      Throws:
      Exception
    • destroy

      private void destroy() throws Exception
      Throws:
      Exception
    • decompressHeader

      private void decompressHeader(byte[] srcBuf, int size) throws Exception
      Throws:
      Exception
    • decompress

      private void decompress(byte[] srcBuf, int size, byte[] dstBuf, int desiredWidth, int pitch, int desiredHeight, int pixelFormat, int flags) throws Exception
      Throws:
      Exception
    • decompress

      private void decompress(byte[] srcBuf, int size, int[] dstBuf, int desiredWidth, int pitch, int desiredHeight, int pixelFormat, int flags) throws Exception
      Throws:
      Exception
    • decompressToYUV

      private void decompressToYUV(byte[] srcBuf, int size, byte[] dstBuf, int flags) throws Exception
      Throws:
      Exception