org.libjpegturbo.turbojpeg

## Class TJDecompressor

- java.lang.Object
- - org.libjpegturbo.turbojpeg.TJDecompressor

- Direct Known Subclasses:
    TJTransformer

      public class TJDecompressor
      extends java.lang.Object

  TurboJPEG decompressor

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.nio.ByteOrder` | `byteOrder`
    `protected long` | `handle`
    `protected byte[]` | `jpegBuf`
    `protected int` | `jpegBufSize`
    `protected int` | `jpegHeight`
    `protected int` | `jpegSubsamp`
    `protected int` | `jpegWidth`
    `private static java.lang.String` | `NO_ASSOC_ERROR`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TJDecompressor()` 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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Free the native structures associated with this decompressor instance.
    `void` | `decompress(java.awt.image.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` | `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.
    `java.awt.image.BufferedImage` | `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.
    `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` | `destroy()`
    `protected void` | `finalize()`
    `int` | `getHeight()` Returns the height of the JPEG image associated with this decompressor instance.
    `byte[]` | `getJPEGBuf()` Returns the JPEG image buffer associated with this decompressor instance.
    `int` | `getJPEGSize()` 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` | `getSubsamp()` Returns the level of chrominance subsampling used in the JPEG image associated with this decompressor instance.
    `int` | `getWidth()` Returns the width of the JPEG image associated with this decompressor instance.
    `private void` | `init()`
    `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 Detail

    - #### NO_ASSOC_ERROR

          private static final java.lang.String NO_ASSOC_ERROR

      See Also:
        Constant Field Values

    - #### 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 java.nio.ByteOrder byteOrder

  - ### Constructor Detail

    - #### TJDecompressor

          public TJDecompressor()
                         throws java.lang.Exception

      Create a TurboJPEG decompresssor instance.
      Throws:
        `java.lang.Exception`

    - #### TJDecompressor

          public TJDecompressor(byte[] jpegImage)
                         throws java.lang.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:
        `java.lang.Exception`

    - #### TJDecompressor

          public TJDecompressor(byte[] jpegImage,
                                int imageSize)
                         throws java.lang.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:
        `java.lang.Exception`

  - ### Method Detail

    - #### setJPEGImage

          public void setJPEGImage(byte[] jpegImage,
                                   int imageSize)
                            throws java.lang.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:
        `java.lang.Exception`

    - #### getWidth

          public int getWidth()
                       throws java.lang.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:
        `java.lang.Exception`

    - #### getHeight

          public int getHeight()
                        throws java.lang.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:
        `java.lang.Exception`

    - #### getSubsamp

          public int getSubsamp()
                         throws java.lang.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:
        `java.lang.Exception`

    - #### getJPEGBuf

          public byte[] getJPEGBuf()
                            throws java.lang.Exception

      Returns the JPEG image buffer associated with this decompressor instance.
      Returns:
        the JPEG image buffer associated with this decompressor instance
      Throws:
        `java.lang.Exception`

    - #### getJPEGSize

          public int getJPEGSize()
                          throws java.lang.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:
        `java.lang.Exception`

    - #### getScaledWidth

          public int getScaledWidth(int desiredWidth,
                                    int desiredHeight)
                             throws java.lang.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:
        `java.lang.Exception`

    - #### getScaledHeight

          public int getScaledHeight(int desiredWidth,
                                     int desiredHeight)
                              throws java.lang.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:
        `java.lang.Exception`

    - #### decompress

          public void decompress(byte[] dstBuf,
                                 int desiredWidth,
                                 int pitch,
                                 int desiredHeight,
                                 int pixelFormat,
                                 int flags)
                          throws java.lang.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:
        `java.lang.Exception`

    - #### decompress

          public byte[] decompress(int desiredWidth,
                                   int pitch,
                                   int desiredHeight,
                                   int pixelFormat,
                                   int flags)
                            throws java.lang.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:
        `java.lang.Exception`

    - #### decompressToYUV

          public void decompressToYUV(byte[] dstBuf,
                                      int flags)
                               throws java.lang.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:
        `java.lang.Exception`

    - #### decompressToYUV

          public byte[] decompressToYUV(int flags)
                                 throws java.lang.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:
        `java.lang.Exception`

    - #### decompress

          public void decompress(java.awt.image.BufferedImage dstImage,
                                 int flags)
                          throws java.lang.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:
        `java.lang.Exception`

    - #### decompress

          public java.awt.image.BufferedImage decompress(int desiredWidth,
                                                         int desiredHeight,
                                                         int bufferedImageType,
                                                         int flags)
                                                  throws java.lang.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:
        `java.lang.Exception`

    - #### close

          public void close()
                     throws java.lang.Exception

      Free the native structures associated with this decompressor instance.
      Throws:
        `java.lang.Exception`

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Overrides:
        `finalize` in class `java.lang.Object`
      Throws:
        `java.lang.Throwable`

    - #### init

          private void init()
                     throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### destroy

          private void destroy()
                        throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### decompressHeader

          private void decompressHeader(byte[] srcBuf,
                                        int size)
                                 throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### decompress

          private void decompress(byte[] srcBuf,
                                  int size,
                                  byte[] dstBuf,
                                  int desiredWidth,
                                  int pitch,
                                  int desiredHeight,
                                  int pixelFormat,
                                  int flags)
                           throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### decompress

          private void decompress(byte[] srcBuf,
                                  int size,
                                  int[] dstBuf,
                                  int desiredWidth,
                                  int pitch,
                                  int desiredHeight,
                                  int pixelFormat,
                                  int flags)
                           throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### decompressToYUV

          private void decompressToYUV(byte[] srcBuf,
                                       int size,
                                       byte[] dstBuf,
                                       int flags)
                                throws java.lang.Exception

      Throws:
        `java.lang.Exception`

Copyright © 2026 Open Microscopy Environment