|
JSR-209 (Final Release) | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjavax.imageio.IIOParam
javax.imageio.ImageWriteParam
A class describing how a stream is to be encoded. Instances of
this class or its subclasses are used to supply prescriptive
"how-to" information to instances of ImageWriter
.
The region of the image to be written is determined by first
intersecting the actual bounds of the image with the rectangle
specified by IIOParam.setSourceRegion
, if any. If the
resulting rectangle has a width or height of zero, the writer will
throw an IIOException
. If the intersection is
non-empty, writing will commence with the first subsampled pixel
and include additional pixels within the intersected bounds
according to the horizontal and vertical subsampling factors
specified by
.
IIOParam.setSourceSubsampling
Individual features such as progressive encoding, and
compression may be set in one of three modes.
MODE_DISABLED
disables the features;
MODE_DEFAULT
enables the feature with
writer-controlled parameter values; MODE_EXPLICIT
enables the feature and allows the use of a set
method
to provide additional parameters. Non-standard features
supplied in subclasses are encouraged, but not required to use a
similar scheme.
ImageReadParam
Field Summary | |
protected boolean |
canWriteCompressed
A boolean that is true if this writer
can write images using compression. |
protected boolean |
canWriteProgressive
A boolean that is true if this
ImageWriteParam allows images to be written as a
progressive sequence of increasing quality passes. |
protected int |
compressionMode
The mode controlling compression settings, which must be set to one of the three MODE_* values. |
protected float |
compressionQuality
A float containing the current compression quality
setting. |
protected java.lang.String |
compressionType
A String containing the name of the current
compression type, or null if none is set. |
protected java.lang.String[] |
compressionTypes
An array of String s containing the names of the
available compression types. |
protected java.util.Locale |
locale
A Locale to be used to localize compression type
names and quality descriptions, or null to use a
default Locale . |
static int |
MODE_DEFAULT
A constant value that may be passed into methods such as setProgressiveMode , and
setCompressionMode to enable that feature for
future writes. |
static int |
MODE_DISABLED
A constant value that may be passed into methods such as setProgressiveMode ,
and setCompressionMode to disable a feature for
future writes. |
static int |
MODE_EXPLICIT
A constant value that may be passed into methods such as setCompressionMode
to enable a feature for future writes. |
protected int |
progressiveMode
The mode controlling progressive encoding, which must be set to one of the three MODE_* values, except
MODE_EXPLICIT . |
Fields inherited from class javax.imageio.IIOParam |
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset |
Constructor Summary | |
protected |
ImageWriteParam()
Constructs an empty ImageWriteParam . |
|
ImageWriteParam(java.util.Locale locale)
Constructs an ImageWriteParam set to use a
given Locale . |
Method Summary | |
boolean |
canWriteCompressed()
Returns true if this writer supports compression. |
boolean |
canWriteProgressive()
Returns true if the writer can write out images
as a series of passes of progressively increasing quality. |
float |
getBitRate(float quality)
Returns a float indicating an estimate of the
number of bits of output data for each bit of input image data
at the given quality level. |
int |
getCompressionMode()
Returns the current compression mode, if compression is supported. |
float |
getCompressionQuality()
Returns the current compression quality setting. |
java.lang.String[] |
getCompressionQualityDescriptions()
Returns an array of String s that may be used along
with getCompressionQualityValues as part of a user
interface for setting or displaying the compression quality
level. |
float[] |
getCompressionQualityValues()
Returns an array of float s that may be used along
with getCompressionQualityDescriptions as part of a user
interface for setting or displaying the compression quality
level. |
java.lang.String |
getCompressionType()
Returns the currently set compression type, or null if none has been set. |
java.lang.String[] |
getCompressionTypes()
Returns a list of available compression types, as an array or String s, or null if a compression
type may not be chosen using these interfaces. |
java.util.Locale |
getLocale()
Returns the currently set Locale , or
null if only a default Locale is
supported. |
java.lang.String |
getLocalizedCompressionTypeName()
Returns a localized version of the name of the current compression type, using the Locale returned by
getLocale . |
int |
getProgressiveMode()
Returns the current mode for writing the stream in a progressive manner. |
boolean |
isCompressionLossless()
Returns true if the current compression type
provides lossless compression. |
void |
setCompressionMode(int mode)
Specifies whether compression is to be performed, and if so how compression parameters are to be determined. |
void |
setCompressionQuality(float quality)
Sets the compression quality to a value between 0
and 1 . |
void |
setCompressionType(java.lang.String compressionType)
Sets the compression type to one of the values indicated by getCompressionTypes . |
void |
setProgressiveMode(int mode)
Specifies that the writer is to write the image out in a progressive mode such that the stream will contain a series of scans of increasing quality. |
void |
unsetCompression()
Removes any previous compression type and quality settings. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final int MODE_DISABLED
setProgressiveMode
,
and setCompressionMode
to disable a feature for
future writes. That is, when this mode is set the stream will
not be progressive, or compressed, and the
relevant accessor methods will throw an
IllegalStateException
.
MODE_EXPLICIT
,
MODE_DEFAULT
,
setProgressiveMode(int)
,
getProgressiveMode()
,
setCompressionMode(int)
,
getCompressionMode()
,
Constant Field Valuespublic static final int MODE_DEFAULT
setProgressiveMode
, and
setCompressionMode
to enable that feature for
future writes. That is, when this mode is enabled the stream
will be progressive, or compressed according to a
sensible default chosen internally by the writer
and the relevant accessor methods will
throw an IllegalStateException
.
MODE_DISABLED
,
MODE_EXPLICIT
,
setProgressiveMode(int)
,
getProgressiveMode()
,
setCompressionMode(int)
,
getCompressionMode()
,
Constant Field Valuespublic static final int MODE_EXPLICIT
setCompressionMode
to enable a feature for future writes. That is, when this mode
is set the stream will be compressed according to
additional information supplied to the corresponding
set
methods in this class and retrievable from the
corresponding get
methods. Note that this mode is
not supported for progressive output.
MODE_DISABLED
,
MODE_DEFAULT
,
setProgressiveMode(int)
,
getProgressiveMode()
,
setCompressionMode(int)
,
getCompressionMode()
,
Constant Field Valuesprotected boolean canWriteProgressive
boolean
that is true
if this
ImageWriteParam
allows images to be written as a
progressive sequence of increasing quality passes. By default,
the value is false
. Subclasses must set the value
manually.
Subclasses that do not support progressive encoding must
ensure that this value is set to false
.
protected int progressiveMode
MODE_*
values, except
MODE_EXPLICIT
.
Subclasses that do not support progressive encoding may
ignore this value. The default is MODE_DEFAULT
.
MODE_DISABLED
,
MODE_EXPLICIT
,
MODE_DEFAULT
,
setProgressiveMode(int)
,
getProgressiveMode()
protected boolean canWriteCompressed
boolean
that is true
if this writer
can write images using compression. By default, the value is
false
. Subclasses must set the value manually.
Subclasses that do not support compression must ensure that
this value is set to false
.
protected int compressionMode
MODE_*
values.
Subclasses that do not support compression may ignore this
value. The default is MODE_DEFAULT
.
MODE_DISABLED
,
MODE_EXPLICIT
,
MODE_DEFAULT
,
setCompressionMode(int)
,
getCompressionMode()
protected java.lang.String[] compressionTypes
String
s containing the names of the
available compression types. Subclasses must set the value
manually.
Subclasses that do not support compression may ignore this value.
protected java.lang.String compressionType
String
containing the name of the current
compression type, or null
if none is set.
Subclasses that do not support compression may ignore this value.
protected float compressionQuality
float
containing the current compression quality
setting. The initial value is 1.0F
.
Subclasses that do not support compression may ignore this value.
protected java.util.Locale locale
Locale
to be used to localize compression type
names and quality descriptions, or null
to use a
default Locale
. Subclasses must set the value
manually.
Constructor Detail |
protected ImageWriteParam()
ImageWriteParam
. It is up to
the subclass to set up the instance variables properly.
public ImageWriteParam(java.util.Locale locale)
ImageWriteParam
set to use a
given Locale
.
locale
- a Locale
to be used to localize
compression type names and quality descriptions, or
null
.Method Detail |
public java.util.Locale getLocale()
Locale
, or
null
if only a default Locale
is
supported.
Locale
, or null
.public boolean canWriteProgressive()
true
if the writer can write out images
as a series of passes of progressively increasing quality.
true
if the writer supports progressive
encoding.setProgressiveMode(int)
,
getProgressiveMode()
public void setProgressiveMode(int mode)
UnsupportedOperationException
will
be thrown.
The mode argument determines how
the progression parameters are chosen, and must be either
MODE_DISABLED
, or
MODE_DEFAULT
. Otherwise an
IllegalArgumentException
is thrown.
The modes are interpreted as follows:
MODE_DISABLED
- No progression. Use this to
turn off progession.
MODE_DEFAULT
- The image will be written
progressively, with parameters chosen by the writer.
mode
- The mode for setting progression in the output
stream.
java.lang.UnsupportedOperationException
- if the writer does not
support progressive encoding.
java.lang.IllegalArgumentException
- if mode
is not
one of the modes listed above.getProgressiveMode()
public int getProgressiveMode()
java.lang.UnsupportedOperationException
- if the writer does not
support progressive encoding.setProgressiveMode(int)
public boolean canWriteCompressed()
true
if this writer supports compression.
true
if the writer supports compression.public void setCompressionMode(int mode)
mode
argument must be one of the three modes, interpreted as follows:
MODE_DISABLED
- Do not compress. This may
not be permitted by some writers, such as JPEG, which do not
normally offer uncompressed output. The corresponding
set
and get
methods will throw an
IllegalStateException
.
MODE_EXPLICIT
- Compress using the
compression type and quality settings specified in this
ImageWriteParam
. Any previously set compression
parameters are discarded.
MODE_DEFAULT
- Use default compression
parameters.
mode
- The mode for setting compression in the output
stream.
java.lang.UnsupportedOperationException
- if the writer does not
support compression, or does not support the requested mode.
java.lang.IllegalArgumentException
- if mode
is not
one of the modes listed above.getCompressionMode()
public int getCompressionMode()
java.lang.UnsupportedOperationException
- if the writer does not
support compression.setCompressionMode(int)
public java.lang.String[] getCompressionTypes()
String
s, or null
if a compression
type may not be chosen using these interfaces. The array
returned is a copy.
If the writer only offers a single, mandatory form of compression, it is not necessary to provide any named compression types. Named compression types should only be used where the user is able to make a meaningful choice between different schemes.
The default implementation checks if compression is
supported and throws an
UnsupportedOperationException
if not. Otherwise,
it returns a clone of the compressionTypes
instance variable if it is non-null
, or else
returns null
.
String
s containing the
(non-localized) names of available compression types, or
null
.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.public void setCompressionType(java.lang.String compressionType)
getCompressionTypes
. If a value of
null
is passed in, any previous setting is
removed.
The default implementation checks whether compression is
supported and the compression mode is
MODE_EXPLICIT
. If so, it calls
getCompressionTypes
and checks if
compressionType
is one of the legal values. If it
is, the compressionType
instance variable is set.
If compressionType
is null
, the
instance variable is set without performing any checking.
compressionType
- one of the String
s returned
by getCompressionTypes
, or null
to
remove any previous setting.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.
java.lang.UnsupportedOperationException
- if there are no
settable compression types.
java.lang.IllegalArgumentException
- if
compressionType
is non-null
but is not
one of the values returned by getCompressionTypes
.getCompressionTypes()
,
getCompressionType()
,
unsetCompression()
public java.lang.String getCompressionType()
null
if none has been set. The type is returned
as a String
from among those returned by
getCompressionTypes
.
If no compression type has been set, null
is
returned.
The default implementation checks whether compression is
supported and the compression mode is
MODE_EXPLICIT
. If so, it returns the value of the
compressionType
instance variable.
String
,
or null
if no type is set.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.setCompressionType(java.lang.String)
public void unsetCompression()
The default implementation sets the instance variable
compressionType
to null
, and the
instance variable compressionQuality
to
1.0F
.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.setCompressionType(java.lang.String)
,
setCompressionQuality(float)
public java.lang.String getLocalizedCompressionTypeName()
Locale
returned by
getLocale
.
The default implementation checks whether compression is
supported and the compression mode is
MODE_EXPLICIT
. If so, if
compressionType
is non-null
the value
of getCompressionType
is returned as a
convenience.
String
containing a localized version of
the name of the current compression type.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.
java.lang.IllegalStateException
- if no compression type is set.public boolean isCompressionLossless()
true
if the current compression type
provides lossless compression.
If there are multiple compression types but none has
been set, an IllegalStateException
is thrown.
The default implementation checks whether compression is
supported and the compression mode is
MODE_EXPLICIT
. If so, if
getCompressionTypes()
is null
or
getCompressionType()
is non-null
true
is returned as a convenience.
true
if the current compression type is
lossless.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.
java.lang.IllegalStateException
- if the set of legal
compression types is non-null
and the current
compression type is null
.public void setCompressionQuality(float quality)
0
and 1
. Only a single compression quality setting
is supported by default; writers can provide extended versions
of ImageWriteParam
that offer more control. For
lossy compression schemes, the compression quality should
control the tradeoff between file size and image quality (for
example, by choosing quantization tables when writing JPEG
images). For lossless schemes, the compression quality may be
used to control the tradeoff between file size and time taken
to perform the compression (for example, by optimizing row
filters and setting the ZLIB compression level when writing
PNG images).
A compression quality setting of 0.0 is most generically interpreted as "high compression is important," while a setting of 1.0 is most generically interpreted as "high image quality is important."
If there are multiple compression types but none has been
set, an IllegalStateException
is thrown.
The default implementation checks that compression is
supported, and that the compression mode is
MODE_EXPLICIT
. If so, if
getCompressionTypes()
returns null
or
compressionType
is non-null
it sets
the compressionQuality
instance variable.
quality
- a float
between 0
and
1
indicating the desired quality level.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.
java.lang.IllegalStateException
- if the set of legal
compression types is non-null
and the current
compression type is null
.
java.lang.IllegalArgumentException
- if quality
is
not between 0
and 1
, inclusive.getCompressionQuality()
public float getCompressionQuality()
If there are multiple compression types but none has been
set, an IllegalStateException
is thrown.
The default implementation checks that compression is
supported and that the compression mode is
MODE_EXPLICIT
. If so, if
getCompressionTypes()
is null
or
getCompressionType()
is non-null
, it
returns the value of the compressionQuality
instance variable.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.
java.lang.IllegalStateException
- if the set of legal
compression types is non-null
and the current
compression type is null
.setCompressionQuality(float)
public float getBitRate(float quality)
float
indicating an estimate of the
number of bits of output data for each bit of input image data
at the given quality level. The value will typically lie
between 0
and 1
, with smaller values
indicating more compression. A special value of
-1.0F
is used to indicate that no estimate is
available.
If there are multiple compression types but none has been set,
an IllegalStateException
is thrown.
The default implementation checks that compression is
supported and the compression mode is
MODE_EXPLICIT
. If so, if
getCompressionTypes()
is null
or
getCompressionType()
is non-null
, and
quality
is within bounds, it returns
-1.0
.
quality
- the quality setting whose bit rate is to be
queried.
-1.0F
if no estimate is available.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.
java.lang.IllegalStateException
- if the set of legal
compression types is non-null
and the current
compression type is null
.
java.lang.IllegalArgumentException
- if quality
is
not between 0
and 1
, inclusive.public java.lang.String[] getCompressionQualityDescriptions()
String
s that may be used along
with getCompressionQualityValues
as part of a user
interface for setting or displaying the compression quality
level. The String
with index i
provides a description of the range of quality levels between
getCompressionQualityValues[i]
and
getCompressionQualityValues[i + 1]
. Note that the
length of the array returned from
getCompressionQualityValues
will always be one
greater than that returned from
getCompressionQualityDescriptions
.
As an example, the strings "Good", "Better", and "Best"
could be associated with the ranges [0, .33)
,
[.33, .66)
, and [.66, 1.0]
. In this
case, getCompressionQualityDescriptions
would
return { "Good", "Better", "Best" }
and
getCompressionQualityValues
would return
{ 0.0F, .33F, .66F, 1.0F }
.
If no descriptions are available, null
is
returned. If null
is returned from
getCompressionQualityValues
, this method must also
return null
.
The descriptions should be localized for the
Locale
returned by getLocale
, if it
is non-null
.
If there are multiple compression types but none has been set,
an IllegalStateException
is thrown.
The default implementation checks that compression is
supported and that the compression mode is
MODE_EXPLICIT
. If so, if
getCompressionTypes()
is null
or
getCompressionType()
is non-null
, it
returns null
.
String
s containing localized
descriptions of the compression quality levels.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.
java.lang.IllegalStateException
- if the set of legal
compression types is non-null
and the current
compression type is null
.getCompressionQualityValues()
public float[] getCompressionQualityValues()
float
s that may be used along
with getCompressionQualityDescriptions
as part of a user
interface for setting or displaying the compression quality
level. See getCompressionQualityDescriptions
for more information.
If no descriptions are available, null
is
returned. If null
is returned from
getCompressionQualityDescriptions
, this method
must also return null
.
If there are multiple compression types but none has been set,
an IllegalStateException
is thrown.
The default implementation checks that compression is
supported and that the compression mode is
MODE_EXPLICIT
. If so, if
getCompressionTypes()
is null
or
getCompressionType()
is non-null
, it
returns null
.
float
s indicating the
boundaries between the compression quality levels as described
by the String
s from
getCompressionQualityDescriptions
.
java.lang.UnsupportedOperationException
- if the writer does not
support compression.
java.lang.IllegalStateException
- if the compression mode is not
MODE_EXPLICIT
.
java.lang.IllegalStateException
- if the set of legal
compression types is non-null
and the current
compression type is null
.getCompressionQualityDescriptions()
|
JSR-209 (Final Release) | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |