ImageWriterSpipublic abstract class ImageWriterSpi extends ImageReaderWriterSpi The service provider interface (SPI) for ImageWriter s.
For more information on service provider classes, see the class comment
for the IIORegistry class.
Each ImageWriterSpi provides several types of information
about the ImageWriter class with which it is associated.
The name of the vendor who defined the SPI class and a
brief description of the class are available via the
getVendorName , getDescription ,
and getVersion methods.
These methods may be internationalized to provide locale-specific
output. These methods are intended mainly to provide short,
human-writable information that might be used to organize a pop-up
menu or other list.
Lists of format names, file suffixes, and MIME types associated
with the service may be obtained by means of the
getFormatNames , getFileSuffixes , and
getMIMEType methods. These methods may be used to
identify candidate ImageWriter s for writing a
particular file or stream based on manual format selection, file
naming, or MIME associations.
A more reliable way to determine which ImageWriter s
are likely to be able to parse a particular data stream is provided
by the canEncodeImage method. This methods allows the
service provider to inspect the actual image contents.
Finally, an instance of the ImageWriter class
associated with this service provider may be obtained by calling
the createWriterInstance method. Any heavyweight
initialization, such as the loading of native libraries or creation
of large tables, should be deferred at least until the first
invocation of this method. |
Fields Summary |
---|
public static final Class[] | STANDARD_OUTPUT_TYPEA single-element array, initially containing
ImageInputStream.class , to be returned from
getInputTypes . | protected Class[] | outputTypesAn array of Class objects to be returned from
getOutputTypes , initially null . | protected String[] | readerSpiNamesAn array of strings to be returned from
getImageReaderSpiNames , initially
null . | private Class | writerClassThe Class of the writer, initially
null . |
Constructors Summary |
---|
protected ImageWriterSpi()Constructs a blank ImageWriterSpi . It is up to
the subclass to initialize instance variables and/or override
method implementations in order to provide working versions of
all methods.
| public ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String writerClassName, Class[] outputTypes, String[] readerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)Constructs an ImageWriterSpi with a given
set of values.
super(vendorName, version,
names, suffixes, MIMETypes, writerClassName,
supportsStandardStreamMetadataFormat,
nativeStreamMetadataFormatName,
nativeStreamMetadataFormatClassName,
extraStreamMetadataFormatNames,
extraStreamMetadataFormatClassNames,
supportsStandardImageMetadataFormat,
nativeImageMetadataFormatName,
nativeImageMetadataFormatClassName,
extraImageMetadataFormatNames,
extraImageMetadataFormatClassNames);
if (outputTypes == null) {
throw new IllegalArgumentException
("outputTypes == null!");
}
if (outputTypes.length == 0) {
throw new IllegalArgumentException
("outputTypes.length == 0!");
}
this.outputTypes = (Class[])outputTypes.clone();
// If length == 0, leave it null
if (readerSpiNames != null && readerSpiNames.length > 0) {
this.readerSpiNames = (String[])readerSpiNames.clone();
}
|
Methods Summary |
---|
public abstract boolean | canEncodeImage(javax.imageio.ImageTypeSpecifier type)Returns true if the ImageWriter
implementation associated with this service provider is able to
encode an image with the given layout. The layout
(i.e., the image's SampleModel and
ColorModel ) is described by an
ImageTypeSpecifier object.
A return value of true is not an absolute
guarantee of successful encoding; the encoding process may still
produce errors due to factors such as I/O errors, inconsistent
or malformed data structures, etc. The intent is that a
reasonable inspection of the basic structure of the image be
performed in order to determine if it is within the scope of
the encoding format. For example, a service provider for a
format that can only encode greyscale would return
false if handed an RGB BufferedImage .
Similarly, a service provider for a format that can encode
8-bit RGB imagery might refuse to encode an image with an
associated alpha channel.
Different ImageWriter s, and thus service
providers, may choose to be more or less strict. For example,
they might accept an image with premultiplied alpha even though
it will have to be divided out of each pixel, at some loss of
precision, in order to be stored.
| public boolean | canEncodeImage(java.awt.image.RenderedImage im)Returns true if the ImageWriter
implementation associated with this service provider is able to
encode the given RenderedImage instance. Note
that this includes instances of
java.awt.image.BufferedImage .
See the discussion for
canEncodeImage(ImageTypeSpecifier) for information
on the semantics of this method.
return canEncodeImage(ImageTypeSpecifier.createFromRenderedImage(im));
| public javax.imageio.ImageWriter | createWriterInstance()Returns an instance of the ImageWriter
implementation associated with this service provider.
The returned object will initially be in an initial state as if
its reset method had been called.
The default implementation simply returns
createWriterInstance(null) .
return createWriterInstance(null);
| public abstract javax.imageio.ImageWriter | createWriterInstance(java.lang.Object extension)Returns an instance of the ImageWriter
implementation associated with this service provider.
The returned object will initially be in an initial state
as if its reset method had been called.
An Object may be supplied to the plug-in at
construction time. The nature of the object is entirely
plug-in specific.
Typically, a plug-in will implement this method using code
such as return new MyImageWriter(this) .
| public java.lang.String[] | getImageReaderSpiNames()Returns an array of String s containing all the
fully qualified names of all the ImageReaderSpi
classes that can understand the internal metadata
representation used by the ImageWriter associated
with this service provider, or null if there are
no such ImageReaders specified. If a
non-null value is returned, it must have non-zero
length.
The first item in the array must be the name of the service
provider for the "preferred" reader, as it will be used to
instantiate the ImageReader returned by
ImageIO.getImageReader(ImageWriter) .
This mechanism may be used to obtain
ImageReaders that will generated non-pixel
meta-data (see IIOExtraDataInfo ) in a structure
understood by an ImageWriter . By reading the
image and obtaining this data from one of the
ImageReaders obtained with this method and passing
it on to the ImageWriter , a client program can
read an image, modify it in some way, and write it back out
preserving all meta-data, without having to understand anything
about the internal structure of the meta-data, or even about
the image format.
return readerSpiNames == null ?
null : (String[])readerSpiNames.clone();
| public java.lang.Class[] | getOutputTypes()Returns an array of Class objects indicating what
types of objects may be used as arguments to the writer's
setOutput method.
For most writers, which only output to an
ImageOutputStream , a single-element array
containing ImageOutputStream.class should be
returned.
return (Class[])outputTypes.clone();
| public boolean | isFormatLossless()Returns true if the format that this writer
outputs preserves pixel data bit-accurately. The default
implementation returns true .
return true;
| public boolean | isOwnWriter(javax.imageio.ImageWriter writer)Returns true if the ImageWriter object
passed in is an instance of the ImageWriter
associated with this service provider.
if (writer == null) {
throw new IllegalArgumentException("writer == null!");
}
String name = writer.getClass().getName();
return name.equals(pluginClassName);
|
|