|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.imageio.IIOParam javax.imageio.ImageWriteParam com.sun.media.imageio.plugins.tiff.TIFFImageWriteParam
A subclass of
allowing control over the TIFF writing process. The set of innately
supported compression types is listed in the following table:
ImageWriteParam
Compression Type | Description | Reference |
---|---|---|
CCITT RLE | Modified Huffman compression | TIFF 6.0 Specification, Section 10 |
CCITT T.4 | CCITT T.4 bilevel encoding/Group 3 facsimile compression | TIFF 6.0 Specification, Section 11 |
CCITT T.6 | CCITT T.6 bilevel encoding/Group 4 facsimile compression | TIFF 6.0 Specification, Section 11 |
LZW | LZW compression | TIFF 6.0 Specification, Section 13 |
JPEG | "New" JPEG-in-TIFF compression | TIFF Technical Note #2 |
ZLib | "Deflate/Inflate" compression (see note following this table) | Adobe Photoshop® TIFF Technical Notes (PDF) |
PackBits | Byte-oriented, run length compression | TIFF 6.0 Specification, Section 9 |
Deflate | "Zip-in-TIFF" compression (see note following this table) | ZLIB Compressed Data Format Specification, DEFLATE Compressed Data Format Specification |
EXIF JPEG | EXIF-specific JPEG compression (see note following this table) | EXIF 2.2 Specification (PDF), section 4.5.5, "Basic Structure of Thumbnail Data" |
Old-style JPEG compression as described in section 22 of the TIFF 6.0 Specification is not supported.
The CCITT compression types are applicable to bilevel (1-bit) images only. The JPEG compression type is applicable to byte grayscale (1-band) and RGB (3-band) images only.
ZLib and Deflate compression are identical except for the value of the TIFF Compression field: for ZLib the Compression field has value 8 whereas for Deflate it has value 32946 (0x80b2). In both cases each image segment (strip or tile) is written as a single complete zlib data stream.
"EXIF JPEG" is a compression type used when writing the contents of an APP1 EXIF marker segment for inclusion in a JPEG native image metadata tree. The contents appended to the output when this compression type is used are a function of whether an empty or non-empty image is written. If the image is empty, then a TIFF IFD adhering to the specification of a compressed EXIF primary IFD is appended. If the image is non-empty, then a complete IFD and image adhering to the specification of a compressed EXIF thumbnail IFD and image are appended. Note that the data of the empty image may not later be appended using the pixel replacement capability of the TIFF writer.
If ZLib/Deflate or JPEG compression is used, the compression quality may be set. For ZLib/Deflate the supplied floating point quality value is rescaled to the range [1, 9] and truncated to an integer to derive the Deflate compression level. For JPEG the floating point quality value is passed directly to the JPEG writer plug-in which interprets it in the usual way.
The canWriteTiles
and
canWriteCompressed
methods will return
true
; the canOffsetTiles
and
canWriteProgressive
methods will return
false
.
If tiles are being written, then each of their dimensions will be rounded to the nearest multiple of 16 per the TIFF specification. If JPEG-in-TIFF compression is being used, and tiles are being written each tile dimension will be rounded to the nearest multiple of 8 times the JPEG minimum coded unit (MCU) in that dimension. If JPEG-in-TIFF compression is being used and strips are being written, the number of rows per strip is rounded to a multiple of 8 times the maximum MCU over both dimensions.
Field Summary |
Fields inherited from class javax.imageio.ImageWriteParam |
canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, compressionMode, compressionQuality, compressionType, compressionTypes, locale, MODE_COPY_FROM_METADATA, MODE_DEFAULT, MODE_DISABLED, MODE_EXPLICIT, preferredTileSizes, progressiveMode, tileGridXOffset, tileGridYOffset, tileHeight, tileWidth, tilingMode, tilingSet |
Fields inherited from class javax.imageio.IIOParam |
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset |
Constructor Summary | |
TIFFImageWriteParam(Locale locale)
Constructs a TIFFImageWriteParam instance
for a given Locale . |
Method Summary | |
TIFFColorConverter |
getColorConverter()
Returns the current TIFFColorConverter object that
will be used to perform color conversion when writing the
image, or null if none is set. |
int |
getPhotometricInterpretation()
Returns the current value that will be written to the Photometricinterpretation tag. |
TIFFCompressor |
getTIFFCompressor()
Returns the TIFFCompressor that is currently set
to be used by the ImageWriter to encode each image
strip or tile, or null if none has been set. |
boolean |
isCompressionLossless()
|
void |
setColorConverter(TIFFColorConverter colorConverter,
int photometricInterpretation)
Sets the TIFFColorConverter object describing the
color space to which the input data should be converted for
storage in the input stream. |
void |
setTIFFCompressor(TIFFCompressor compressor)
Sets the TIFFCompressor object to be used by the
ImageWriter to encode each image strip or tile. |
void |
unsetColorConverter()
Removes any currently set ColorConverter object and
PhotometricInterpretation tag value. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public TIFFImageWriteParam(Locale locale)
TIFFImageWriteParam
instance
for a given Locale
.
locale
- the Locale
for which messages
should be localized.Method Detail |
public boolean isCompressionLossless()
public void setTIFFCompressor(TIFFCompressor compressor)
TIFFCompressor
object to be used by the
ImageWriter
to encode each image strip or tile.
A value of null
allows the writer to choose its
own TIFFCompressor.
Note that invoking this method is not sufficient to set
the compression type:
must be invoked explicitly for this purpose. The following
code illustrates the correct procedure:
setCompressionType()
TIFFImageWriteParam writeParam; TIFFCompressor compressor; writeParam.setCompressionMode(writeParam.MODE_EXPLICIT); writeParam.setTIFFCompressor(compressor); writeParam.setCompressionType(compressor.getCompressionType());If
compressionType
is set to a value different from
that supported by the TIFFCompressor
then the
compressor object will not be used.
If the compression type supported by the supplied
TIFFCompressor
is not among those in
,
then it will be appended to this array after removing any previously
appended compression type. If compressionTypes
compressor
is
null
this will also cause any previously appended
type to be removed from the array.
compressor
- the TIFFCompressor
to be
used for encoding, or null
to allow the writer to
choose its own.
IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.getTIFFCompressor()
public TIFFCompressor getTIFFCompressor()
TIFFCompressor
that is currently set
to be used by the ImageWriter
to encode each image
strip or tile, or null
if none has been set.
TIFFCompressor
to be
used for encoding, or null
if none has been set
(allowing the writer to choose its own).
IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.setTIFFCompressor(TIFFCompressor)
public void setColorConverter(TIFFColorConverter colorConverter, int photometricInterpretation)
TIFFColorConverter
object describing the
color space to which the input data should be converted for
storage in the input stream. In addition, the value to be
written to the PhotometricInterpretation
tag is
supplied.
colorConverter
- a TIFFColorConverter
object,
or null
.photometricInterpretation
- the value to be written to the
PhotometricInterpretation
tag in the root IFD.getColorConverter()
,
getPhotometricInterpretation()
public TIFFColorConverter getColorConverter()
TIFFColorConverter
object that
will be used to perform color conversion when writing the
image, or null
if none is set.
TIFFColorConverter
object, or
null
.setColorConverter(TIFFColorConverter, int)
public int getPhotometricInterpretation()
Photometricinterpretation
tag. This method should
only be called if a value has been set using the
setColorConverter
method.
int
to be used as the value of the
PhotometricInterpretation
tag.
IllegalStateException
- if no value is set.setColorConverter(TIFFColorConverter, int)
public void unsetColorConverter()
ColorConverter
object and
PhotometricInterpretation
tag value.
setColorConverter(TIFFColorConverter, int)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |