## org.libjpegturbo.turbojpeg
Class TJCompressor

    java.lang.Object
      org.libjpegturbo.turbojpeg.TJCompressor

    public class TJCompressor

extends java.lang.Object

TurboJPEG compressor

Constructor Summary
`TJCompressor()` Create a TurboJPEG compressor instance.
`TJCompressor(byte[] srcImage, int width, int pitch, int height, int pixelFormat)` Deprecated. Use `TJCompressor(byte[], int, int, int, int, int, int)` instead.
`TJCompressor(byte[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat)` Create a TurboJPEG compressor instance and associate the uncompressed source image stored in `srcImage` with the newly created instance.

Method Summary
`void` | `close()` Free the native structures associated with this compressor instance.
`void` | `compress(java.awt.image.BufferedImage srcImage, byte[] dstBuf, int flags)` Compress the uncompressed source image stored in `srcImage` and output a JPEG image to the given destination buffer.
`byte[]` | `compress(java.awt.image.BufferedImage srcImage, int flags)` Compress the uncompressed source image stored in `srcImage` and return a buffer containing a JPEG image.
`void` | `compress(byte[] dstBuf, int flags)` Compress the uncompressed source image associated with this compressor instance and output a JPEG image to the given destination buffer.
`byte[]` | `compress(int flags)` Compress the uncompressed source image associated with this compressor instance and return a buffer containing a JPEG image.
`void` | `encodeYUV(java.awt.image.BufferedImage srcImage, byte[] dstBuf, int flags)` Encode the uncompressed source image stored in `srcImage` and output a YUV planar image to the given destination buffer.
`byte[]` | `encodeYUV(java.awt.image.BufferedImage srcImage, int flags)` Encode the uncompressed source image stored in `srcImage` and return a buffer containing a YUV planar image.
`void` | `encodeYUV(byte[] dstBuf, int flags)` Encode the uncompressed source image associated with this compressor instance and output a YUV planar image to the given destination buffer.
`byte[]` | `encodeYUV(int flags)` Encode the uncompressed source image associated with this compressor instance and return a buffer containing a YUV planar image.
`protected void` | `finalize()`
`int` | `getCompressedSize()` Returns the size of the image (in bytes) generated by the most recent compress/encode operation.
`void` | `setJPEGQuality(int quality)` Set the JPEG image quality level for subsequent compress operations.
`void` | `setSourceImage(byte[] srcImage, int width, int pitch, int height, int pixelFormat)` Deprecated. Use `setSourceImage(byte[], int, int, int, int, int, int)` instead.
`void` | `setSourceImage(byte[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat)` Associate an uncompressed source image with this compressor instance.
`void` | `setSubsamp(int newSubsamp)` Set the level of chrominance subsampling for subsequent compress/encode operations.

Methods inherited from class java.lang.Object
`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### TJCompressor

    public TJCompressor()
                 throws java.lang.Exception

  Create a TurboJPEG compressor instance.

  Throws:
    `java.lang.Exception`

### TJCompressor

    public TJCompressor(byte[] srcImage,
                        int x,
                        int y,
                        int width,
                        int pitch,
                        int height,
                        int pixelFormat)
                 throws java.lang.Exception

  Create a TurboJPEG compressor instance and associate the uncompressed source image stored in `srcImage` with the newly created instance.

  Parameters:
    `srcImage` - see `setSourceImage(byte[], int, int, int, int, int, int)` for description
    `x` - see `setSourceImage(byte[], int, int, int, int, int, int)` for description
    `y` - see `setSourceImage(byte[], int, int, int, int, int, int)` for description
    `width` - see `setSourceImage(byte[], int, int, int, int, int, int)` for description
    `pitch` - see `setSourceImage(byte[], int, int, int, int, int, int)` for description
    `height` - see `setSourceImage(byte[], int, int, int, int, int, int)` for description
    `pixelFormat` - pixel format of the source image (one of `TJ.PF_*`)
  Throws:
    `java.lang.Exception`

### TJCompressor

    @Deprecated
    public TJCompressor(byte[] srcImage,
                                   int width,
                                   int pitch,
                                   int height,
                                   int pixelFormat)
                 throws java.lang.Exception

  Deprecated. Use `TJCompressor(byte[], int, int, int, int, int, int)` instead.

  Throws:
    `java.lang.Exception`

Method Detail

### setSourceImage

    public void setSourceImage(byte[] srcImage,
                               int x,
                               int y,
                               int width,
                               int pitch,
                               int height,
                               int pixelFormat)
                        throws java.lang.Exception

  Associate an uncompressed source image with this compressor instance.

  Parameters:
    `srcImage` - image buffer containing RGB or grayscale pixels to be compressed or encoded
    `x` - x offset (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encoded
    `y` - y offset (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encoded
    `width` - width (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encoded
    `pitch` - bytes per line of the source image. Normally, this should be `width * TJ.pixelSize(pixelFormat)` if the source image is unpadded, but you can use this parameter to, for instance, specify that the scanlines in the source image are padded to a 4-byte boundary or to compress/encode a JPEG or YUV image from a region of a larger source image. You can also be clever and use this parameter to skip lines, etc. Setting this parameter to 0 is the equivalent of setting it to `width * TJ.pixelSize(pixelFormat)`.
    `height` - height (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encoded
    `pixelFormat` - pixel format of the source image (one of `TJ.PF_*`)
  Throws:
    `java.lang.Exception`

### setSourceImage

    @Deprecated
    public void setSourceImage(byte[] srcImage,
                                          int width,
                                          int pitch,
                                          int height,
                                          int pixelFormat)
                        throws java.lang.Exception

  Deprecated. Use `setSourceImage(byte[], int, int, int, int, int, int)` instead.

  Throws:
    `java.lang.Exception`

### setSubsamp

    public void setSubsamp(int newSubsamp)
                    throws java.lang.Exception

  Set the level of chrominance subsampling for subsequent compress/encode operations.

  Parameters:
    `newSubsamp` - the level of chrominance subsampling to use in subsequent compress/encode operations (one of `TJ.SAMP_*`)
  Throws:
    `java.lang.Exception`

### setJPEGQuality

    public void setJPEGQuality(int quality)
                        throws java.lang.Exception

  Set the JPEG image quality level for subsequent compress operations.

  Parameters:
    `quality` - the new JPEG image quality level (1 to 100, 1 = worst, 100 = best)
  Throws:
    `java.lang.Exception`

### compress

    public void compress(byte[] dstBuf,
                         int flags)
                  throws java.lang.Exception

  Compress the uncompressed source image associated with this compressor instance and output a JPEG image to the given destination buffer.

  Parameters:
    `dstBuf` - buffer that will receive the JPEG image. Use `TJ.bufSize(int, int, int)` to determine the maximum size for this buffer based on the source image's width and height and the desired level of chrominance subsampling.
    `flags` - the bitwise OR of one or more of `TJ.FLAG_*`
  Throws:
    `java.lang.Exception`

### compress

    public byte[] compress(int flags)
                    throws java.lang.Exception

  Compress the uncompressed source image associated with this compressor instance and return a buffer containing a JPEG image.

  Parameters:
    `flags` - the bitwise OR of one or more of `TJ.FLAG_*`
  Returns:
    a buffer containing a JPEG image. The length of this buffer will not be equal to the size of the JPEG image. Use `getCompressedSize()` to obtain the size of the JPEG image.
  Throws:
    `java.lang.Exception`

### compress

    public void compress(java.awt.image.BufferedImage srcImage,
                         byte[] dstBuf,
                         int flags)
                  throws java.lang.Exception

  Compress the uncompressed source image stored in `srcImage` and output a JPEG image to the given destination buffer.

  Parameters:
    `srcImage` - a `BufferedImage` instance containing RGB or grayscale pixels to be compressed
    `dstBuf` - buffer that will receive the JPEG image. Use `TJ.bufSize(int, int, int)` to determine the maximum 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`

### compress

    public byte[] compress(java.awt.image.BufferedImage srcImage,
                           int flags)
                    throws java.lang.Exception

  Compress the uncompressed source image stored in `srcImage` and return a buffer containing a JPEG image.

  Parameters:
    `srcImage` - a `BufferedImage` instance containing RGB or grayscale pixels to be compressed
    `flags` - the bitwise OR of one or more of `TJ.FLAG_*`
  Returns:
    a buffer containing a JPEG image. The length of this buffer will not be equal to the size of the JPEG image. Use `getCompressedSize()` to obtain the size of the JPEG image.
  Throws:
    `java.lang.Exception`

### encodeYUV

    public void encodeYUV(byte[] dstBuf,
                          int flags)
                   throws java.lang.Exception

  Encode the uncompressed source image associated with this compressor instance and output a YUV planar image to the given destination buffer. This method uses the accelerated color conversion routines in TurboJPEG's underlying codec to produce a planar YUV image that is suitable for direct video display. Specifically, if the chrominance components are subsampled along the horizontal dimension, then the width of the luminance plane is padded to the nearest multiple of 2 in the output image (same goes for the height of the luminance plane, if the chrominance components are subsampled along the vertical dimension.) Also, each line of each plane in the output image is padded to 4 bytes. Although this will work with any subsampling option, it is really only useful in combination with `TJ.SAMP_420`, which produces an image compatible with the I420 (AKA "YUV420P") format.

  NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the convention of the digital video community, the TurboJPEG API uses "YUV" to refer to an image format consisting of Y, Cb, and Cr image planes.

  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`

### encodeYUV

    public byte[] encodeYUV(int flags)
                     throws java.lang.Exception

  Encode the uncompressed source image associated with this compressor instance and return a buffer containing a YUV planar image. See `encodeYUV(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`

### encodeYUV

    public void encodeYUV(java.awt.image.BufferedImage srcImage,
                          byte[] dstBuf,
                          int flags)
                   throws java.lang.Exception

  Encode the uncompressed source image stored in `srcImage` and output a YUV planar image to the given destination buffer. See `encodeYUV(byte[], int)` for more detail.

  Parameters:
    `srcImage` - a `BufferedImage` instance containing RGB or grayscale pixels to be encoded
    `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`

### encodeYUV

    public byte[] encodeYUV(java.awt.image.BufferedImage srcImage,
                            int flags)
                     throws java.lang.Exception

  Encode the uncompressed source image stored in `srcImage` and return a buffer containing a YUV planar image. See `encodeYUV(byte[], int)` for more detail.

  Parameters:
    `srcImage` - a `BufferedImage` instance containing RGB or grayscale pixels to be encoded
    `flags` - the bitwise OR of one or more of `TJ.FLAG_*`
  Returns:
    a buffer containing a YUV planar image
  Throws:
    `java.lang.Exception`

### getCompressedSize

    public int getCompressedSize()

  Returns the size of the image (in bytes) generated by the most recent compress/encode operation.

  Returns:
    the size of the image (in bytes) generated by the most recent compress/encode operation

### close

    public void close()
               throws java.lang.Exception

  Free the native structures associated with this compressor instance.

  Throws:
    `java.lang.Exception`

### finalize

    protected void finalize()
                     throws java.lang.Throwable

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