Package org.libjpegturbo.turbojpeg
Class TJCompressor
- java.lang.Object
-
- org.libjpegturbo.turbojpeg.TJCompressor
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public class TJCompressor extends java.lang.Object implements java.io.Closeable
TurboJPEG compressor
-
-
Constructor Summary
Constructors Constructor Description TJCompressor()
Create a TurboJPEG compressor instance.TJCompressor(byte[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat)
Create a TurboJPEG compressor instance and associate the packed-pixel source image, stored insrcImage
with 2 to 8 bits of data precision per sample, with the newly created instance.TJCompressor(java.awt.image.BufferedImage srcImage, int x, int y, int width, int height)
Create a TurboJPEG compressor instance and associate the 8-bit-per-sample packed-pixel source image stored insrcImage
with the newly created instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
close()
Free the native structures associated with this compressor instance.byte[]
compress()
Compress the packed-pixel or planar YUV source image associated with this compressor instance and return a buffer containing a JPEG image.void
compress(byte[] dstBuf)
Compress the packed-pixel or planar YUV source image associated with this compressor instance and output a JPEG image to the given destination buffer.void
compress(byte[] dstBuf, int flags)
Deprecated.Useset()
andcompress(byte[])
instead.byte[]
compress(int flags)
Deprecated.Useset()
andcompress()
instead.YUVImage
encodeYUV(int align)
Encode the 8-bit-per-sample packed-pixel source image associated with this compressor instance into an 8-bit-per-sample unified planar YUV image and return aYUVImage
instance containing the encoded image.YUVImage
encodeYUV(int[] strides)
Encode the 8-bit-per-sample packed-pixel source image associated with this compressor instance into separate 8-bit-per-sample Y, U (Cb), and V (Cr) image planes and return aYUVImage
instance containing the encoded image planes.YUVImage
encodeYUV(int[] strides, int flags)
Deprecated.Useset()
andencodeYUV(int[])
instead.YUVImage
encodeYUV(int align, int flags)
Deprecated.Useset()
andencodeYUV(int)
instead.void
encodeYUV(YUVImage dstImage)
Encode the 8-bit-per-sample packed-pixel source image associated with this compressor instance into an 8-bit-per-sample planar YUV image and store it in the givenYUVImage
instance.void
encodeYUV(YUVImage dstImage, int flags)
Deprecated.Useset()
andencodeYUV(YUVImage)
instead.protected void
finalize()
int
get(int param)
Get the value of a compression parameter.int
getCompressedSize()
Returns the size of the image (in bytes) generated by the most recent compress operation.void
set(int param, int value)
Set the value of a compression parameter.void
setJPEGQuality(int quality)
Deprecated.Use
instead.set
(TJ.PARAM_QUALITY
, ...)void
setSourceImage(byte[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat)
Associate a packed-pixel RGB, grayscale, or CMYK source image with 2 to 8 bits of data precision per sample with this compressor instance.void
setSourceImage(java.awt.image.BufferedImage srcImage, int x, int y, int width, int height)
Associate an 8-bit-per-sample packed-pixel RGB or grayscale source image with this compressor instance.void
setSourceImage(YUVImage srcImage)
Associate an 8-bit-per-sample planar YUV source image with this compressor instance.void
setSourceImage12(short[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat)
Associate a packed-pixel RGB, grayscale, or CMYK source image with 9 to 12 bits of data precision per sample with this compressor instance.void
setSourceImage16(short[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat)
Associate a packed-pixel RGB, grayscale, or CMYK source image with 13 to 16 bits of data precision per sample with this compressor instance.void
setSubsamp(int subsamp)
Deprecated.Use
instead.set
(TJ.PARAM_SUBSAMP
, ...)
-
-
-
Constructor Detail
-
TJCompressor
public TJCompressor() throws TJException
Create a TurboJPEG compressor instance.- Throws:
TJException
-
TJCompressor
public TJCompressor(byte[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat) throws TJException
Create a TurboJPEG compressor instance and associate the packed-pixel source image, stored insrcImage
with 2 to 8 bits of data precision per sample, with the newly created instance.- Parameters:
srcImage
- seesetSourceImage(byte[], int, int, int, int, int, int)
for descriptionx
- seesetSourceImage(byte[], int, int, int, int, int, int)
for descriptiony
- seesetSourceImage(byte[], int, int, int, int, int, int)
for descriptionwidth
- seesetSourceImage(byte[], int, int, int, int, int, int)
for descriptionpitch
- seesetSourceImage(byte[], int, int, int, int, int, int)
for descriptionheight
- seesetSourceImage(byte[], int, int, int, int, int, int)
for descriptionpixelFormat
- pixel format of the source image (one ofTJ.PF_*
)- Throws:
TJException
-
TJCompressor
public TJCompressor(java.awt.image.BufferedImage srcImage, int x, int y, int width, int height) throws TJException
Create a TurboJPEG compressor instance and associate the 8-bit-per-sample packed-pixel source image stored insrcImage
with the newly created instance.- Parameters:
srcImage
- seesetSourceImage(BufferedImage, int, int, int, int)
for descriptionx
- seesetSourceImage(BufferedImage, int, int, int, int)
for descriptiony
- seesetSourceImage(BufferedImage, int, int, int, int)
for descriptionwidth
- seesetSourceImage(BufferedImage, int, int, int, int)
for descriptionheight
- seesetSourceImage(BufferedImage, int, int, int, int)
for description- Throws:
TJException
-
-
Method Detail
-
setSourceImage
public void setSourceImage(byte[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat) throws TJException
Associate a packed-pixel RGB, grayscale, or CMYK source image with 2 to 8 bits of data precision per sample with this compressor instance. Note that packed-pixel source images with 2 to 7 bits of data precision per sample can only be compressed into lossless JPEG images.- Parameters:
srcImage
- buffer containing a packed-pixel RGB, grayscale, or CMYK source image to be compressed or encoded. The data precision of the source image (from 2 to 8 bits per sample) can be specified usingTJ.PARAM_PRECISION
and defaults to 8 ifTJ.PARAM_PRECISION
is unset or out of range. This buffer is not modified.x
- x offset (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encodedy
- y offset (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encodedwidth
- width (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encodedpitch
- bytes per row in the source image. Normally this should bewidth *
, if the source image is unpadded. (Setting this parameter to 0 is the equivalent of setting it toTJ.getPixelSize
(pixelFormat)width *
.) However, you can also use this parameter to specify the row alignment/padding of the source image, to skip rows, or to compress/encode a JPEG or YUV image from a specific region of a larger source image.TJ.getPixelSize
(pixelFormat)height
- height (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encodedpixelFormat
- pixel format of the source image (one ofTJ.PF_*
)- Throws:
TJException
-
setSourceImage12
public void setSourceImage12(short[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat) throws TJException
Associate a packed-pixel RGB, grayscale, or CMYK source image with 9 to 12 bits of data precision per sample with this compressor instance. Note that packed-pixel source images with 9 to 11 bits of data precision per sample can only be compressed into lossless JPEG images.- Parameters:
srcImage
- buffer containing a packed-pixel RGB, grayscale, or CMYK source image to be compressed. The data precision of the source image (from 9 to 12 bits per sample) can be specified usingTJ.PARAM_PRECISION
and defaults to 12 ifTJ.PARAM_PRECISION
is unset or out of range. This buffer is not modified.x
- x offset (in pixels) of the region in the source image from which the JPEG image should be compressedy
- y offset (in pixels) of the region in the source image from which the JPEG image should be compressedwidth
- width (in pixels) of the region in the source image from which the JPEG image should be compressedpitch
- samples per row in the source image. Normally this should bewidth *
, if the source image is unpadded. (Setting this parameter to 0 is the equivalent of setting it toTJ.getPixelSize
(pixelFormat)width *
.) However, you can also use this parameter to specify the row alignment/padding of the source image, to skip rows, or to compress a JPEG image from a specific region of a larger source image.TJ.getPixelSize
(pixelFormat)height
- height (in pixels) of the region in the source image from which the JPEG image should be compressedpixelFormat
- pixel format of the source image (one ofTJ.PF_*
)- Throws:
TJException
-
setSourceImage16
public void setSourceImage16(short[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat) throws TJException
Associate a packed-pixel RGB, grayscale, or CMYK source image with 13 to 16 bits of data precision per sample with this compressor instance. Note that packed-pixel source images with 13 to 16 bits of data precision per sample can only be compressed into lossless JPEG images.- Parameters:
srcImage
- buffer containing a packed-pixel RGB, grayscale, or CMYK source image to be compressed. The data precision of the source image (from 13 to 16 bits per sample) can be specified usingTJ.PARAM_PRECISION
and defaults to 16 ifTJ.PARAM_PRECISION
is unset or out of range. This buffer is not modified.x
- x offset (in pixels) of the region in the source image from which the JPEG image should be compressedy
- y offset (in pixels) of the region in the source image from which the JPEG image should be compressedwidth
- width (in pixels) of the region in the source image from which the JPEG image should be compressedpitch
- samples per row in the source image. Normally this should bewidth *
, if the source image is unpadded. (Setting this parameter to 0 is the equivalent of setting it toTJ.getPixelSize
(pixelFormat)width *
.) However, you can also use this parameter to specify the row alignment/padding of the source image, to skip rows, or to compress a JPEG image from a specific region of a larger source image.TJ.getPixelSize
(pixelFormat)height
- height (in pixels) of the region in the source image from which the JPEG image should be compressedpixelFormat
- pixel format of the source image (one ofTJ.PF_*
)- Throws:
TJException
-
setSourceImage
public void setSourceImage(java.awt.image.BufferedImage srcImage, int x, int y, int width, int height) throws TJException
Associate an 8-bit-per-sample packed-pixel RGB or grayscale source image with this compressor instance.- Parameters:
srcImage
- aBufferedImage
instance containing a packed-pixel RGB or grayscale source image to be compressed or encoded. This image is not modified.x
- x offset (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encodedy
- y offset (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encodedwidth
- width (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encoded (0 = use the width of the source image)height
- height (in pixels) of the region in the source image from which the JPEG or YUV image should be compressed/encoded (0 = use the height of the source image)- Throws:
TJException
-
setSourceImage
public void setSourceImage(YUVImage srcImage) throws TJException
Associate an 8-bit-per-sample planar YUV source image with this compressor instance. This method setsTJ.PARAM_SUBSAMP
to the chrominance subsampling level of the source image.- Parameters:
srcImage
- planar YUV source image to be compressed. This image is not modified.- Throws:
TJException
-
set
public void set(int param, int value)
Set the value of a compression parameter.- Parameters:
param
- one ofTJ.PARAM_*
value
- value of the compression parameter (refer toparameter documentation
)
-
get
public int get(int param)
Get the value of a compression parameter.- Parameters:
param
- one ofTJ.PARAM_*
- Returns:
- the value of the specified compression parameter, or -1 if the value is unknown.
-
setSubsamp
@Deprecated public void setSubsamp(int subsamp)
Deprecated.Use
instead.set
(TJ.PARAM_SUBSAMP
, ...)
-
setJPEGQuality
@Deprecated public void setJPEGQuality(int quality)
Deprecated.Use
instead.set
(TJ.PARAM_QUALITY
, ...)
-
compress
public void compress(byte[] dstBuf) throws TJException
Compress the packed-pixel or planar YUV 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. UseTJ.bufSize()
to determine the maximum size for this buffer based on the source image's width and height and the desired level of chrominance subsampling (seeTJ.PARAM_SUBSAMP
.)- Throws:
TJException
-
compress
@Deprecated public void compress(byte[] dstBuf, int flags) throws TJException
Deprecated.Useset()
andcompress(byte[])
instead.- Throws:
TJException
-
compress
public byte[] compress() throws TJException
Compress the packed-pixel or planar YUV source image associated with this compressor instance and return a buffer containing a JPEG image.- 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:
TJException
-
compress
@Deprecated public byte[] compress(int flags) throws TJException
Deprecated.Useset()
andcompress()
instead.- Throws:
TJException
-
encodeYUV
public void encodeYUV(YUVImage dstImage) throws TJException
Encode the 8-bit-per-sample packed-pixel source image associated with this compressor instance into an 8-bit-per-sample planar YUV image and store it in the givenYUVImage
instance. This method performs color conversion (which is accelerated in the libjpeg-turbo implementation) but does not execute any of the other steps in the JPEG compression process. Encoding CMYK source images into YUV images is not supported. This method setsTJ.PARAM_SUBSAMP
to the chrominance subsampling level of the destination image.- Parameters:
dstImage
-YUVImage
instance that will receive the planar YUV image- Throws:
TJException
-
encodeYUV
@Deprecated public void encodeYUV(YUVImage dstImage, int flags) throws TJException
Deprecated.Useset()
andencodeYUV(YUVImage)
instead.- Throws:
TJException
-
encodeYUV
public YUVImage encodeYUV(int align) throws TJException
Encode the 8-bit-per-sample packed-pixel source image associated with this compressor instance into an 8-bit-per-sample unified planar YUV image and return aYUVImage
instance containing the encoded image. This method performs color conversion (which is accelerated in the libjpeg-turbo implementation) but does not execute any of the other steps in the JPEG compression process. Encoding CMYK source images into YUV images is not supported.- Parameters:
align
- row alignment (in bytes) of the YUV image (must be a power of 2.) Setting this parameter to n will cause each row in each plane of the YUV image to be padded to the nearest multiple of n bytes (1 = unpadded.)- Returns:
- a
YUVImage
instance containing the unified planar YUV encoded image - Throws:
TJException
-
encodeYUV
@Deprecated public YUVImage encodeYUV(int align, int flags) throws TJException
Deprecated.Useset()
andencodeYUV(int)
instead.- Throws:
TJException
-
encodeYUV
public YUVImage encodeYUV(int[] strides) throws TJException
Encode the 8-bit-per-sample packed-pixel source image associated with this compressor instance into separate 8-bit-per-sample Y, U (Cb), and V (Cr) image planes and return aYUVImage
instance containing the encoded image planes. This method performs color conversion (which is accelerated in the libjpeg-turbo implementation) but does not execute any of the other steps in the JPEG compression process. Encoding CMYK source images into YUV images is not supported.- Parameters:
strides
- an array of integers, each specifying the number of bytes per row in the corresponding plane of the YUV source image. Setting the stride for any plane to 0 is the same as setting it to the plane width (seeYUVImage
.) Ifstrides
is null, then the strides for all planes will be set to their respective plane widths. You can adjust the strides in order to add an arbitrary amount of row padding to each plane.- Returns:
- a
YUVImage
instance containing the encoded image planes - Throws:
TJException
-
encodeYUV
@Deprecated public YUVImage encodeYUV(int[] strides, int flags) throws TJException
Deprecated.Useset()
andencodeYUV(int[])
instead.- Throws:
TJException
-
getCompressedSize
public int getCompressedSize()
Returns the size of the image (in bytes) generated by the most recent compress operation.- Returns:
- the size of the image (in bytes) generated by the most recent compress operation.
-
close
public void close() throws TJException
Free the native structures associated with this compressor instance.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Throws:
TJException
-
finalize
protected void finalize() throws java.lang.Throwable
- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
-
-