org.libjpegturbo.turbojpeg
Class TJCompressor

java.lang.Object
  extended by 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)
          Create a TurboJPEG compressor instance and associate the uncompressed source image stored in srcImage with the newly-created instance.
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 setSourceImageYUV(byte[] srcImage, int width, int pad, int height)
          Associate an uncompressed YUV planar source image with this compressor instance.
 void setSubsamp(int newSubsamp)
          Set the level of chrominance subsampling for subsequent compress/encode operations.
 void setYUVPad(int pad)
          Set the plane padding for subsequent YUV 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 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
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

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
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, grayscale, or CMYK pixels to be compressed
x - x offset (in pixels) of the region from which the JPEG image should be compressed, relative to the start of srcImage.
y - y offset (in pixels) of the region from which the JPEG image should be compressed, relative to the start of srcImage.
width - width (in pixels) of the region in the source image from which the JPEG image should be compressed.
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 a JPEG 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 image should be compressed.
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

setSourceImageYUV

public void setSourceImageYUV(byte[] srcImage,
                              int width,
                              int pad,
                              int height)
                       throws java.lang.Exception
Associate an uncompressed YUV planar source image with this compressor instance.

Parameters:
srcImage - image buffer containing a YUV planar image to be compressed. The Y, U (Cb), and V (Cr) image planes should be stored sequentially in the buffer, and the size of each plane is determined by the specified width, height, and padding, as well as the level of chrominance subsampling (specified using setSubsamp(int).) If the chrominance components are subsampled along the horizontal dimension, then the width of the luminance plane should be padded to the nearest multiple of 2 (same goes for the height of the luminance plane, if the chrominance components are subsampled along the vertical dimension.) This is irrespective of any additional padding specified in the pad parameter.
width - width (in pixels) of the source image
pad - the line padding used in the source image. For instance, if each line in each plane of the YUV image is padded to the nearest multiple of 4 bytes, then pad should be set to 4.
height - height (in pixels) of the source image
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. When pixels are converted from RGB to YCbCr (see TJ.CS_YCbCr) or from CMYK to YCCK (see TJ.CS_YCCK) as part of the JPEG compression process, some of the Cb and Cr (chrominance) components can be discarded or averaged together to produce a smaller image with little perceptible loss of image clarity (the human eye is more sensitive to small changes in brightness than to small changes in color.) This is called "chrominance subsampling".

NOTE: When compressing a YUV planar image into a JPEG image, this method also specifies the level of chrominance subsampling used in the source image.

Parameters:
newSubsamp - the new level of chrominance subsampling (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 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(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

setYUVPad

public void setYUVPad(int pad)
               throws java.lang.Exception
Set the plane padding for subsequent YUV encode operations.

Parameters:
pad - the width of each line in each plane of the YUV image will be padded to the nearest multiple of this number of bytes (must be a power of 2.) The default padding is 4 bytes, which generates images suitable for direct video display.
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 but does not execute any of the other steps in the JPEG compression process. The Y, U (Cb), and V (Cr) image planes are stored sequentially into the destination buffer, and the size of each plane is determined by the width and height of the source image, as well as the specified padding and level of chrominance subsampling. 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.)

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, 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, 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