public class TJCompressor
extends java.lang.Object
implements java.io.Closeable
Constructor and Description |
---|
TJCompressor()
Create a TurboJPEG compressor instance.
|
TJCompressor(java.awt.image.BufferedImage srcImage,
int x,
int y,
int width,
int height)
Create a TurboJPEG compressor instance and associate the uncompressed
source image stored in
srcImage with the newly created
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. |
Modifier and Type | Method and Description |
---|---|
void |
close()
Free the native structures associated with this compressor instance.
|
void |
compress(java.awt.image.BufferedImage srcImage,
byte[] dstBuf,
int flags)
Deprecated.
Use
setSourceImage(BufferedImage, int, int, int, int) and
compress(byte[], int) instead. |
byte[] |
compress(java.awt.image.BufferedImage srcImage,
int flags)
Deprecated.
Use
setSourceImage(BufferedImage, int, int, int, int) and
compress(int) instead. |
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)
Deprecated.
Use
setSourceImage(BufferedImage, int, int, int, int) and
encodeYUV(byte[], int) instead. |
byte[] |
encodeYUV(java.awt.image.BufferedImage srcImage,
int flags)
Deprecated.
Use
setSourceImage(BufferedImage, int, int, int, int) and
encodeYUV(int, int) instead. |
void |
encodeYUV(byte[] dstBuf,
int flags)
Deprecated.
Use
encodeYUV(YUVImage, int) instead. |
byte[] |
encodeYUV(int flags)
Deprecated.
Use
encodeYUV(int, int) instead. |
YUVImage |
encodeYUV(int[] strides,
int flags)
Encode the uncompressed source image associated with this compressor
instance into separate Y, U (Cb), and V (Cr) image planes and return a
YUVImage instance containing the encoded image planes. |
YUVImage |
encodeYUV(int pad,
int flags)
Encode the uncompressed source image associated with this compressor
instance into a unified YUV planar image buffer and return a
YUVImage instance containing the encoded image. |
void |
encodeYUV(YUVImage dstImage,
int flags)
Encode the uncompressed source image associated with this compressor
instance into a YUV planar image and store it in the given
YUVImage instance. |
protected void |
finalize() |
int |
getCompressedSize()
Returns the size of the image (in bytes) generated by the most recent
compress operation.
|
void |
setJPEGQuality(int quality)
Set the JPEG image quality level for subsequent compress operations.
|
void |
setSourceImage(java.awt.image.BufferedImage srcImage,
int x,
int y,
int width,
int height)
Associate an uncompressed RGB or grayscale source image with this
compressor instance.
|
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 RGB, grayscale, or CMYK source image with this
compressor instance.
|
void |
setSourceImage(YUVImage srcImage)
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.
|
public TJCompressor() throws TJException
TJException
public TJCompressor(byte[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat) throws TJException
srcImage
with the newly created
instance.srcImage
- see setSourceImage(byte[], int, int, int, int, int, int)
for descriptionx
- see setSourceImage(byte[], int, int, int, int, int, int)
for descriptiony
- see setSourceImage(byte[], int, int, int, int, int, int)
for descriptionwidth
- see setSourceImage(byte[], int, int, int, int, int, int)
for descriptionpitch
- see setSourceImage(byte[], int, int, int, int, int, int)
for descriptionheight
- see setSourceImage(byte[], int, int, int, int, int, int)
for descriptionpixelFormat
- pixel format of the source image (one of
TJ.PF_*
)TJException
@Deprecated public TJCompressor(byte[] srcImage, int width, int pitch, int height, int pixelFormat) throws TJException
TJCompressor(byte[], int, int, int, int, int, int)
instead.TJException
public TJCompressor(java.awt.image.BufferedImage srcImage, int x, int y, int width, int height) throws TJException
srcImage
with the newly created
instance.srcImage
- see
setSourceImage(BufferedImage, int, int, int, int)
for descriptionx
- see
setSourceImage(BufferedImage, int, int, int, int)
for descriptiony
- see
setSourceImage(BufferedImage, int, int, int, int)
for descriptionwidth
- see
setSourceImage(BufferedImage, int, int, int, int)
for descriptionheight
- see
setSourceImage(BufferedImage, int, int, int, int)
for descriptionTJException
public void setSourceImage(byte[] srcImage, int x, int y, int width, int pitch, int height, int pixelFormat) throws TJException
srcImage
- image buffer containing RGB, grayscale, or CMYK pixels to
be compressed or encoded. 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 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/encodedpixelFormat
- pixel format of the source image (one of
TJ.PF_*
)TJException
@Deprecated public void setSourceImage(byte[] srcImage, int width, int pitch, int height, int pixelFormat) throws TJException
setSourceImage(byte[], int, int, int, int, int, int)
instead.TJException
public void setSourceImage(java.awt.image.BufferedImage srcImage, int x, int y, int width, int height) throws TJException
srcImage
- a BufferedImage
instance containing RGB or
grayscale pixels 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)TJException
public void setSourceImage(YUVImage srcImage) throws TJException
srcImage
- YUV planar image to be compressed. This image is not
modified.TJException
public void setSubsamp(int newSubsamp)
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: This method has no effect when compressing a JPEG image from a YUV
planar source. In that case, the level of chrominance subsampling in
the JPEG image is determined by the source. Furthermore, this method has
no effect when encoding to a pre-allocated YUVImage
instance. In
that case, the level of chrominance subsampling is determined by the
destination.
newSubsamp
- the level of chrominance subsampling to use in
subsequent compress/encode oeprations (one of
TJ.SAMP_*
)public void setJPEGQuality(int quality)
quality
- the new JPEG image quality level (1 to 100, 1 = worst,
100 = best)public void compress(byte[] dstBuf, int flags) throws TJException
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_*
TJException
public byte[] compress(int flags) throws TJException
flags
- the bitwise OR of one or more of
TJ.FLAG_*
getCompressedSize()
to obtain the size of the JPEG image.TJException
@Deprecated public void compress(java.awt.image.BufferedImage srcImage, byte[] dstBuf, int flags) throws TJException
setSourceImage(BufferedImage, int, int, int, int)
and
compress(byte[], int)
instead.TJException
@Deprecated public byte[] compress(java.awt.image.BufferedImage srcImage, int flags) throws TJException
TJException
public void encodeYUV(YUVImage dstImage, int flags) throws TJException
YUVImage
instance. 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. Encoding
CMYK source images to YUV is not supported.dstImage
- YUVImage
instance that will receive the YUV planar
imageflags
- the bitwise OR of one or more of
TJ.FLAG_*
TJException
@Deprecated public void encodeYUV(byte[] dstBuf, int flags) throws TJException
encodeYUV(YUVImage, int)
instead.TJException
public YUVImage encodeYUV(int pad, int flags) throws TJException
YUVImage
instance containing the encoded image. 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. Encoding CMYK source images to YUV is not supported.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.)flags
- the bitwise OR of one or more of
TJ.FLAG_*
TJException
public YUVImage encodeYUV(int[] strides, int flags) throws TJException
YUVImage
instance containing the encoded image planes. 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. Encoding CMYK source images to YUV is not supported.strides
- an array of integers, each specifying the number of bytes
per line in the corresponding plane of the output image. Setting the
stride for any plane to 0 is the same as setting it to the component width
of the plane. If strides
is null, then the strides for all
planes will be set to their respective component widths. You can adjust
the strides in order to add an arbitrary amount of line padding to each
plane.flags
- the bitwise OR of one or more of
TJ.FLAG_*
TJException
@Deprecated public byte[] encodeYUV(int flags) throws TJException
encodeYUV(int, int)
instead.TJException
@Deprecated public void encodeYUV(java.awt.image.BufferedImage srcImage, byte[] dstBuf, int flags) throws TJException
setSourceImage(BufferedImage, int, int, int, int)
and
encodeYUV(byte[], int)
instead.TJException
@Deprecated public byte[] encodeYUV(java.awt.image.BufferedImage srcImage, int flags) throws TJException
TJException
public int getCompressedSize()
public void close() throws TJException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
TJException
protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable