下面列出了怎么用javax.imageio.spi.ImageWriterSpi的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode files with the given MIME type.
*
* @param MIMEType a <code>String</code> containing a file
* suffix (<i>e.g.</i>, "image/jpeg" or "image/x-bmp").
*
* @return an <code>Iterator</code> containing <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if <code>MIMEType</code> is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#getMIMETypes
*/
public static Iterator<ImageWriter>
getImageWritersByMIMEType(String MIMEType)
{
if (MIMEType == null) {
throw new IllegalArgumentException("MIMEType == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerMIMETypesMethod,
MIMEType),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
public void doTest() {
File pwd = new File(".");
try {
File f = File.createTempFile("transparency_test_", ".gif", pwd);
System.out.println("file: " + f.getCanonicalPath());
ImageWriter w = ImageIO.getImageWritersByFormatName("GIF").next();
ImageWriterSpi spi = w.getOriginatingProvider();
boolean succeed_write = ImageIO.write(src, "gif", f);
if (!succeed_write) {
throw new RuntimeException("Test failed: failed to write src.");
}
dst = ImageIO.read(f);
checkResult(src, dst);
} catch (IOException e) {
throw new RuntimeException("Test failed.", e);
}
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageTranscoder</code>s that claim to be
* able to transcode between the metadata of the given
* <code>ImageReader</code> and <code>ImageWriter</code>.
*
* @param reader an <code>ImageReader</code>.
* @param writer an <code>ImageWriter</code>.
*
* @return an <code>Iterator</code> containing
* <code>ImageTranscoder</code>s.
*
* @exception IllegalArgumentException if <code>reader</code> or
* <code>writer</code> is <code>null</code>.
*/
public static Iterator<ImageTranscoder>
getImageTranscoders(ImageReader reader, ImageWriter writer)
{
if (reader == null) {
throw new IllegalArgumentException("reader == null!");
}
if (writer == null) {
throw new IllegalArgumentException("writer == null!");
}
ImageReaderSpi readerSpi = reader.getOriginatingProvider();
ImageWriterSpi writerSpi = writer.getOriginatingProvider();
ServiceRegistry.Filter filter =
new TranscoderFilter(readerSpi, writerSpi);
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageTranscoderSpi.class,
filter, true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageTranscoderIterator(iter);
}
public static void main(final String[] args) throws IOException {
final IIORegistry registry = IIORegistry.getDefaultInstance();
final Iterator<ImageWriterSpi> iter = registry.getServiceProviders(
ImageWriterSpi.class, provider -> true, true);
// Validates all supported ImageWriters
int numFailures = 0;
while (iter.hasNext()) {
final WriteAfterAbort writeAfterAbort = new WriteAfterAbort();
final ImageWriter writer = iter.next().createWriterInstance();
System.out.println("ImageWriter = " + writer);
try {
writeAfterAbort.test(writer);
} catch (Exception e) {
System.err.println("Test failed for \""
+ writer.getOriginatingProvider().getFormatNames()[0]
+ "\" format.");
numFailures++;
}
}
if (numFailures == 0) {
System.out.println("Test passed.");
} else {
throw new RuntimeException("Test failed.");
}
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageTranscoder</code>s that claim to be
* able to transcode between the metadata of the given
* <code>ImageReader</code> and <code>ImageWriter</code>.
*
* @param reader an <code>ImageReader</code>.
* @param writer an <code>ImageWriter</code>.
*
* @return an <code>Iterator</code> containing
* <code>ImageTranscoder</code>s.
*
* @exception IllegalArgumentException if <code>reader</code> or
* <code>writer</code> is <code>null</code>.
*/
public static Iterator<ImageTranscoder>
getImageTranscoders(ImageReader reader, ImageWriter writer)
{
if (reader == null) {
throw new IllegalArgumentException("reader == null!");
}
if (writer == null) {
throw new IllegalArgumentException("writer == null!");
}
ImageReaderSpi readerSpi = reader.getOriginatingProvider();
ImageWriterSpi writerSpi = writer.getOriginatingProvider();
ServiceRegistry.Filter filter =
new TranscoderFilter(readerSpi, writerSpi);
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageTranscoderSpi.class,
filter, true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageTranscoderIterator(iter);
}
/**
* Returns an {@code Iterator} containing all currently
* registered {@code ImageWriter}s that claim to be able to
* encode images of the given layout (specified using an
* {@code ImageTypeSpecifier}) in the given format.
*
* @param type an {@code ImageTypeSpecifier} indicating the
* layout of the image to be written.
* @param formatName the informal name of the {@code format}.
*
* @return an {@code Iterator} containing {@code ImageWriter}s.
*
* @exception IllegalArgumentException if any parameter is
* {@code null}.
*
* @see javax.imageio.spi.ImageWriterSpi#canEncodeImage(ImageTypeSpecifier)
*/
public static Iterator<ImageWriter>
getImageWriters(ImageTypeSpecifier type, String formatName)
{
if (type == null) {
throw new IllegalArgumentException("type == null!");
}
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator<ImageWriterSpi> iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new CanEncodeImageAndFormatFilter(type,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode files with the given suffix.
*
* @param fileSuffix a <code>String</code> containing a file
* suffix (<i>e.g.</i>, "jpg" or "tiff").
*
* @return an <code>Iterator</code> containing <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if <code>fileSuffix</code> is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#getFileSuffixes
*/
public static Iterator<ImageWriter>
getImageWritersBySuffix(String fileSuffix)
{
if (fileSuffix == null) {
throw new IllegalArgumentException("fileSuffix == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerFileSuffixesMethod,
fileSuffix),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently registered <code>ImageWriter</code>s that
* claim to be able to encode images of the given layout (specified using an
* <code>ImageTypeSpecifier</code>) in the given format.
*
* @param type
* an <code>ImageTypeSpecifier</code> indicating the layout of the image to be written.
* @param formatName
* the informal name of the <code>format</code>.
*
* @return an <code>Iterator</code> containing <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException
* if any parameter is <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#canEncodeImage(ImageTypeSpecifier)
*/
public static Iterator<ImageWriter> getImageWriters(ImageTypeSpecifier type, String formatName) {
if (type == null) {
throw new IllegalArgumentException("type == null!");
}
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class, new CanEncodeImageAndFormatFilter(type, formatName), true);
} catch (IllegalArgumentException e) {
return new HashSet().iterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode the named format.
*
* @param formatName a <code>String</code> containing the informal
* name of a format (<i>e.g.</i>, "jpeg" or "tiff".
*
* @return an <code>Iterator</code> containing
* <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if <code>formatName</code> is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#getFormatNames
*/
public static Iterator<ImageWriter>
getImageWritersByFormatName(String formatName)
{
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerFormatNamesMethod,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an {@code Iterator} containing all currently
* registered {@code ImageWriter}s that claim to be able to
* encode images of the given layout (specified using an
* {@code ImageTypeSpecifier}) in the given format.
*
* @param type an {@code ImageTypeSpecifier} indicating the
* layout of the image to be written.
* @param formatName the informal name of the {@code format}.
*
* @return an {@code Iterator} containing {@code ImageWriter}s.
*
* @exception IllegalArgumentException if any parameter is
* {@code null}.
*
* @see javax.imageio.spi.ImageWriterSpi#canEncodeImage(ImageTypeSpecifier)
*/
public static Iterator<ImageWriter>
getImageWriters(ImageTypeSpecifier type, String formatName)
{
if (type == null) {
throw new IllegalArgumentException("type == null!");
}
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator<ImageWriterSpi> iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new CanEncodeImageAndFormatFilter(type,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageTranscoder</code>s that claim to be
* able to transcode between the metadata of the given
* <code>ImageReader</code> and <code>ImageWriter</code>.
*
* @param reader an <code>ImageReader</code>.
* @param writer an <code>ImageWriter</code>.
*
* @return an <code>Iterator</code> containing
* <code>ImageTranscoder</code>s.
*
* @exception IllegalArgumentException if <code>reader</code> or
* <code>writer</code> is <code>null</code>.
*/
public static Iterator<ImageTranscoder>
getImageTranscoders(ImageReader reader, ImageWriter writer)
{
if (reader == null) {
throw new IllegalArgumentException("reader == null!");
}
if (writer == null) {
throw new IllegalArgumentException("writer == null!");
}
ImageReaderSpi readerSpi = reader.getOriginatingProvider();
ImageWriterSpi writerSpi = writer.getOriginatingProvider();
ServiceRegistry.Filter filter =
new TranscoderFilter(readerSpi, writerSpi);
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageTranscoderSpi.class,
filter, true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageTranscoderIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode the named format.
*
* @param formatName a <code>String</code> containing the informal
* name of a format (<i>e.g.</i>, "jpeg" or "tiff".
*
* @return an <code>Iterator</code> containing
* <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if <code>formatName</code> is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#getFormatNames
*/
public static Iterator<ImageWriter>
getImageWritersByFormatName(String formatName)
{
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerFormatNamesMethod,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an {@code Iterator} containing all currently
* registered {@code ImageWriter}s that claim to be able to
* encode files with the given MIME type.
*
* @param MIMEType a {@code String} containing a file
* suffix (<i>e.g.</i>, "image/jpeg" or "image/x-bmp").
*
* @return an {@code Iterator} containing {@code ImageWriter}s.
*
* @exception IllegalArgumentException if {@code MIMEType} is
* {@code null}.
*
* @see javax.imageio.spi.ImageWriterSpi#getMIMETypes
*/
public static Iterator<ImageWriter>
getImageWritersByMIMEType(String MIMEType)
{
if (MIMEType == null) {
throw new IllegalArgumentException("MIMEType == null!");
}
Iterator<ImageWriterSpi> iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerMIMETypesMethod,
MIMEType),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageTranscoder</code>s that claim to be
* able to transcode between the metadata of the given
* <code>ImageReader</code> and <code>ImageWriter</code>.
*
* @param reader an <code>ImageReader</code>.
* @param writer an <code>ImageWriter</code>.
*
* @return an <code>Iterator</code> containing
* <code>ImageTranscoder</code>s.
*
* @exception IllegalArgumentException if <code>reader</code> or
* <code>writer</code> is <code>null</code>.
*/
public static Iterator<ImageTranscoder>
getImageTranscoders(ImageReader reader, ImageWriter writer)
{
if (reader == null) {
throw new IllegalArgumentException("reader == null!");
}
if (writer == null) {
throw new IllegalArgumentException("writer == null!");
}
ImageReaderSpi readerSpi = reader.getOriginatingProvider();
ImageWriterSpi writerSpi = writer.getOriginatingProvider();
ServiceRegistry.Filter filter =
new TranscoderFilter(readerSpi, writerSpi);
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageTranscoderSpi.class,
filter, true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageTranscoderIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode the named format.
*
* @param formatName a <code>String</code> containing the informal
* name of a format (<i>e.g.</i>, "jpeg" or "tiff".
*
* @return an <code>Iterator</code> containing
* <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if <code>formatName</code> is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#getFormatNames
*/
public static Iterator<ImageWriter>
getImageWritersByFormatName(String formatName)
{
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerFormatNamesMethod,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageTranscoder</code>s that claim to be
* able to transcode between the metadata of the given
* <code>ImageReader</code> and <code>ImageWriter</code>.
*
* @param reader an <code>ImageReader</code>.
* @param writer an <code>ImageWriter</code>.
*
* @return an <code>Iterator</code> containing
* <code>ImageTranscoder</code>s.
*
* @exception IllegalArgumentException if <code>reader</code> or
* <code>writer</code> is <code>null</code>.
*/
public static Iterator<ImageTranscoder>
getImageTranscoders(ImageReader reader, ImageWriter writer)
{
if (reader == null) {
throw new IllegalArgumentException("reader == null!");
}
if (writer == null) {
throw new IllegalArgumentException("writer == null!");
}
ImageReaderSpi readerSpi = reader.getOriginatingProvider();
ImageWriterSpi writerSpi = writer.getOriginatingProvider();
ServiceRegistry.Filter filter =
new TranscoderFilter(readerSpi, writerSpi);
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageTranscoderSpi.class,
filter, true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageTranscoderIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode the named format.
*
* @param formatName a <code>String</code> containing the informal
* name of a format (<i>e.g.</i>, "jpeg" or "tiff".
*
* @return an <code>Iterator</code> containing
* <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if <code>formatName</code> is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#getFormatNames
*/
public static Iterator<ImageWriter>
getImageWritersByFormatName(String formatName)
{
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerFormatNamesMethod,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode images of the given layout (specified using an
* <code>ImageTypeSpecifier</code>) in the given format.
*
* @param type an <code>ImageTypeSpecifier</code> indicating the
* layout of the image to be written.
* @param formatName the informal name of the <code>format</code>.
*
* @return an <code>Iterator</code> containing <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if any parameter is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#canEncodeImage(ImageTypeSpecifier)
*/
public static Iterator<ImageWriter>
getImageWriters(ImageTypeSpecifier type, String formatName)
{
if (type == null) {
throw new IllegalArgumentException("type == null!");
}
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new CanEncodeImageAndFormatFilter(type,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode files with the given suffix.
*
* @param fileSuffix a <code>String</code> containing a file
* suffix (<i>e.g.</i>, "jpg" or "tiff").
*
* @return an <code>Iterator</code> containing <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if <code>fileSuffix</code> is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#getFileSuffixes
*/
public static Iterator<ImageWriter>
getImageWritersBySuffix(String fileSuffix)
{
if (fileSuffix == null) {
throw new IllegalArgumentException("fileSuffix == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerFileSuffixesMethod,
fileSuffix),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode files with the given MIME type.
*
* @param MIMEType a <code>String</code> containing a file
* suffix (<i>e.g.</i>, "image/jpeg" or "image/x-bmp").
*
* @return an <code>Iterator</code> containing <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if <code>MIMEType</code> is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#getMIMETypes
*/
public static Iterator<ImageWriter>
getImageWritersByMIMEType(String MIMEType)
{
if (MIMEType == null) {
throw new IllegalArgumentException("MIMEType == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new ContainsFilter(writerMIMETypesMethod,
MIMEType),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode images of the given layout (specified using an
* <code>ImageTypeSpecifier</code>) in the given format.
*
* @param type an <code>ImageTypeSpecifier</code> indicating the
* layout of the image to be written.
* @param formatName the informal name of the <code>format</code>.
*
* @return an <code>Iterator</code> containing <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if any parameter is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#canEncodeImage(ImageTypeSpecifier)
*/
public static Iterator<ImageWriter>
getImageWriters(ImageTypeSpecifier type, String formatName)
{
if (type == null) {
throw new IllegalArgumentException("type == null!");
}
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new CanEncodeImageAndFormatFilter(type,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
/**
* Returns an <code>Iterator</code> containing all currently
* registered <code>ImageWriter</code>s that claim to be able to
* encode images of the given layout (specified using an
* <code>ImageTypeSpecifier</code>) in the given format.
*
* @param type an <code>ImageTypeSpecifier</code> indicating the
* layout of the image to be written.
* @param formatName the informal name of the <code>format</code>.
*
* @return an <code>Iterator</code> containing <code>ImageWriter</code>s.
*
* @exception IllegalArgumentException if any parameter is
* <code>null</code>.
*
* @see javax.imageio.spi.ImageWriterSpi#canEncodeImage(ImageTypeSpecifier)
*/
public static Iterator<ImageWriter>
getImageWriters(ImageTypeSpecifier type, String formatName)
{
if (type == null) {
throw new IllegalArgumentException("type == null!");
}
if (formatName == null) {
throw new IllegalArgumentException("formatName == null!");
}
Iterator iter;
// Ensure category is present
try {
iter = theRegistry.getServiceProviders(ImageWriterSpi.class,
new CanEncodeImageAndFormatFilter(type,
formatName),
true);
} catch (IllegalArgumentException e) {
return Collections.emptyIterator();
}
return new ImageWriterIterator(iter);
}
private static void initIIOWriteFormats() {
List spis = new ArrayList();
List shortNames = new ArrayList();
ImageIO.scanForPlugins();
IIORegistry registry = IIORegistry.getDefaultInstance();
java.util.Iterator writerspis =
registry.getServiceProviders(ImageWriterSpi.class, false);
while (writerspis.hasNext()) {
// REMIND: there could be more than one non-core plugin for
// a particular format, as is the case for JPEG2000 in the JAI
// IIO Tools package, so we should support that somehow
ImageWriterSpi spi = (ImageWriterSpi)writerspis.next();
String klass = spi.getClass().getName();
String format = spi.getFormatNames()[0].toLowerCase();
String suffix = spi.getFileSuffixes()[0].toLowerCase();
if (suffix == null || suffix.equals("")) {
suffix = format;
}
String shortName;
if (klass.startsWith("com.sun.imageio.plugins")) {
shortName = "core-" + suffix;
} else {
shortName = "ext-" + suffix;
}
spis.add(spi);
shortNames.add(shortName);
}
imageioWriterSpis = new ImageWriterSpi[spis.size()];
imageioWriterSpis = (ImageWriterSpi[])spis.toArray(imageioWriterSpis);
imageioWriteFormatShortNames = new String[shortNames.size()];
imageioWriteFormatShortNames =
(String[])shortNames.toArray(imageioWriteFormatShortNames);
}
public static void main(final String[] args) throws IOException {
final IIORegistry registry = IIORegistry.getDefaultInstance();
final Iterator<ImageWriterSpi> iter = registry.getServiceProviders(
ImageWriterSpi.class, provider -> true, true);
// Validates all supported ImageWriters
while (iter.hasNext()) {
final WriteAfterAbort writeAfterAbort = new WriteAfterAbort();
final ImageWriter writer = iter.next().createWriterInstance();
System.out.println("ImageWriter = " + writer);
writeAfterAbort.test(writer);
}
System.out.println("Test passed");
}
public static void main(final String[] args) throws Exception {
final IIORegistry registry = IIORegistry.getDefaultInstance();
final Iterator<ImageWriterSpi> iter =
registry.getServiceProviders(ImageWriterSpi.class,
provider -> true, true);
// Validates all supported ImageWriters
while (iter.hasNext()) {
final ImageWriter writer = iter.next().createWriterInstance();
System.out.println("ImageWriter = " + writer);
test(writer);
}
System.out.println("Test passed");
}
/** Checks that the provided {@code ImageWriter} can encode
* the provided {@code ImageTypeSpecifier} or not. If not, an
* {@code IIOException} will be thrown.
* @param writer The provided {@code ImageWriter}.
* @param type The image to be tested.
* @throws IIOException If the writer cannot encoded the provided image.
*/
public static final void canEncodeImage(ImageWriter writer,
ImageTypeSpecifier type)
throws IIOException {
ImageWriterSpi spi = writer.getOriginatingProvider();
if(type != null && spi != null && !spi.canEncodeImage(type)) {
throw new IIOException(I18N.getString("ImageUtil2")+" "+
writer.getClass().getName());
}
}
public static void main(final String[] args) throws Exception {
final IIORegistry registry = IIORegistry.getDefaultInstance();
final Iterator<ImageWriterSpi> iter =
registry.getServiceProviders(ImageWriterSpi.class,
provider -> true, true);
// Validates all supported ImageWriters
while (iter.hasNext()) {
final ImageWriter writer = iter.next().createWriterInstance();
System.out.println("ImageWriter = " + writer);
test(writer);
}
System.out.println("Test passed");
}
/** Checks that the provided <code>ImageWriter</code> can encode
* the provided <code>ImageTypeSpecifier</code> or not. If not, an
* <code>IIOException</code> will be thrown.
* @param writer The provided <code>ImageWriter</code>.
* @param type The image to be tested.
* @throws IIOException If the writer cannot encoded the provided image.
*/
public static final void canEncodeImage(ImageWriter writer,
ImageTypeSpecifier type)
throws IIOException {
ImageWriterSpi spi = writer.getOriginatingProvider();
if(type != null && spi != null && !spi.canEncodeImage(type)) {
throw new IIOException(I18N.getString("ImageUtil2")+" "+
writer.getClass().getName());
}
}
private static void initIIOWriteFormats() {
List spis = new ArrayList();
List shortNames = new ArrayList();
ImageIO.scanForPlugins();
IIORegistry registry = IIORegistry.getDefaultInstance();
java.util.Iterator writerspis =
registry.getServiceProviders(ImageWriterSpi.class, false);
while (writerspis.hasNext()) {
// REMIND: there could be more than one non-core plugin for
// a particular format, as is the case for JPEG2000 in the JAI
// IIO Tools package, so we should support that somehow
ImageWriterSpi spi = (ImageWriterSpi)writerspis.next();
String klass = spi.getClass().getName();
String format = spi.getFormatNames()[0].toLowerCase();
String suffix = spi.getFileSuffixes()[0].toLowerCase();
if (suffix == null || suffix.equals("")) {
suffix = format;
}
String shortName;
if (klass.startsWith("com.sun.imageio.plugins")) {
shortName = "core-" + suffix;
} else {
shortName = "ext-" + suffix;
}
spis.add(spi);
shortNames.add(shortName);
}
imageioWriterSpis = new ImageWriterSpi[spis.size()];
imageioWriterSpis = (ImageWriterSpi[])spis.toArray(imageioWriterSpis);
imageioWriteFormatShortNames = new String[shortNames.size()];
imageioWriteFormatShortNames =
(String[])shortNames.toArray(imageioWriteFormatShortNames);
}
public static void main(final String[] args) throws IOException {
final IIORegistry registry = IIORegistry.getDefaultInstance();
final Iterator<ImageWriterSpi> iter = registry.getServiceProviders(
ImageWriterSpi.class, provider -> true, true);
// Validates all supported ImageWriters
while (iter.hasNext()) {
final WriteAfterAbort writeAfterAbort = new WriteAfterAbort();
final ImageWriter writer = iter.next().createWriterInstance();
System.out.println("ImageWriter = " + writer);
writeAfterAbort.test(writer);
}
System.out.println("Test passed");
}