diff options
Diffstat (limited to 'awt/javax/imageio/ImageIO.java')
-rw-r--r-- | awt/javax/imageio/ImageIO.java | 800 |
1 files changed, 0 insertions, 800 deletions
diff --git a/awt/javax/imageio/ImageIO.java b/awt/javax/imageio/ImageIO.java deleted file mode 100644 index e0d7ec9..0000000 --- a/awt/javax/imageio/ImageIO.java +++ /dev/null @@ -1,800 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Rustem V. Rafikov - * @version $Revision: 1.3 $ - */ - -package javax.imageio; - -import javax.imageio.stream.ImageInputStream; -import javax.imageio.stream.ImageOutputStream; -import javax.imageio.spi.*; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Iterator; -import java.util.Arrays; -import java.awt.image.BufferedImage; -import java.awt.image.RenderedImage; -import java.net.URL; - -/** - * The ImageIO class provides static methods to perform reading and writing - * operations using registered ImageReader and ImageWriter objects. - * - * @since Android 1.0 - */ -public final class ImageIO { - - /** - * The constant registry. - */ - private static final IIORegistry registry = IIORegistry.getDefaultInstance(); - - /** - * Instantiates a new ImageIO. - */ - private ImageIO() { - } - - /** - * Scans for plug-ins in the class path, loads spi classes, and registers - * them with the IIORegistry. - */ - public static void scanForPlugins() { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Sets flag which indicates whether a cache file is used when creating - * ImageInputStreams and ImageOutputStreams or not. - * - * @param useCache - * the use cache flag. - */ - public static void setUseCache(boolean useCache) { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets the flag which indicates whether a cache file is used when creating - * ImageInputStreams and ImageOutputStreams or not. This method returns the - * current value which is set by setUseCache method. - * - * @return the use cache flag. - */ - public static boolean getUseCache() { - // TODO implement - return false; - } - - /** - * Sets the cache directory. - * - * @param cacheDirectory - * the File which specifies a cache directory. - */ - public static void setCacheDirectory(File cacheDirectory) { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets the directory where cache files are created, returned the file which - * is set by setCacheDirectory method, or null. - * - * @return the File object which is set by setCacheDirectory method, or - * null. - */ - public static File getCacheDirectory() { - // TODO implement - // -- null indicates system-dep default temporary directory - return null; - } - - /** - * Creates an ImageInputStream from the specified Object. The specified - * Object should obtain the input source such as File, or InputStream. - * - * @param input - * the input Object such as File, or InputStream. - * @return the ImageInputStream object, or null. - * @throws IOException - * if an I/O exception has occurred. - */ - public static ImageInputStream createImageInputStream(Object input) throws IOException { - - if (input == null) { - throw new IllegalArgumentException("input source cannot be NULL"); - } - - Iterator<ImageInputStreamSpi> it = registry.getServiceProviders(ImageInputStreamSpi.class, - true); - - while (it.hasNext()) { - ImageInputStreamSpi spi = it.next(); - if (spi.getInputClass().isInstance(input)) { - return spi.createInputStreamInstance(input); - } - } - return null; - } - - /** - * Creates an ImageOutputStream using the specified Object. The specified - * Object should obtain the output source such as File, or OutputStream. - * - * @param output - * the output Object such as File, or OutputStream. - * @return the ImageOutputStream object, or null. - * @throws IOException - * if an I/O exception has occurred. - */ - public static ImageOutputStream createImageOutputStream(Object output) throws IOException { - if (output == null) { - throw new IllegalArgumentException("output destination cannot be NULL"); - } - - Iterator<ImageOutputStreamSpi> it = registry.getServiceProviders( - ImageOutputStreamSpi.class, true); - - while (it.hasNext()) { - ImageOutputStreamSpi spi = it.next(); - if (spi.getOutputClass().isInstance(output)) { - // todo - use getUseCache and getCacheDir here - return spi.createOutputStreamInstance(output); - } - } - return null; - } - - /** - * Gets the array of format names as String which can be decoded by - * registered ImageReader objects. - * - * @return the array of format names. - */ - public static String[] getReaderFormatNames() { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets the array of MIME types as String which can be decoded by registered - * ImageReader objects. - * - * @return the array of MIME types. - */ - public static String[] getReaderMIMETypes() { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets the Iterator of registered ImageReader which are able to decode an - * input data specified by input Object. - * - * @param input - * the input Object with encoded data such as ImageInputStream - * object. - * @return the Iterator of registered ImageReader. - */ - public static Iterator<ImageReader> getImageReaders(Object input) { - if (input == null) { - throw new NullPointerException("input cannot be NULL"); - } - - Iterator<ImageReaderSpi> it = registry.getServiceProviders(ImageReaderSpi.class, - new CanReadFilter(input), true); - - return new SpiIteratorToReadersIteratorWrapper(it); - } - - /** - * Gets the Iterator of registered ImageReader which are able to decode the - * specified format. - * - * @param formatName - * the format name such as "jpeg", or "gif". - * @return the Iterator of registered ImageReader. - */ - public static Iterator<ImageReader> getImageReadersByFormatName(String formatName) { - if (formatName == null) { - throw new NullPointerException("format name cannot be NULL"); - } - - Iterator<ImageReaderSpi> it = registry.getServiceProviders(ImageReaderSpi.class, - new FormatFilter(formatName), true); - - return new SpiIteratorToReadersIteratorWrapper(it); - } - - /** - * Gets the Iterator which lists the registered ImageReader objects that are - * able to decode files with the specified suffix. - * - * @param fileSuffix - * the file suffix such as "jpg". - * @return the Iterator of registered ImageReaders. - */ - public static Iterator<ImageReader> getImageReadersBySuffix(String fileSuffix) { - if (fileSuffix == null) { - throw new NullPointerException("suffix cannot be NULL"); - } - Iterator<ImageReaderSpi> it = registry.getServiceProviders(ImageReaderSpi.class, - new SuffixFilter(fileSuffix), true); - - return new SpiIteratorToReadersIteratorWrapper(it); - } - - /** - * Gets the Iterator of registered ImageReader objects that are able to - * decode files with the specified MIME type. - * - * @param MIMEType - * the MIME type such as "image/jpeg". - * @return the Iterator of registered ImageReaders. - */ - public static Iterator<ImageReader> getImageReadersByMIMEType(String MIMEType) { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets an array of Strings giving the names of the formats supported by - * registered ImageWriter objects. - * - * @return the array of format names. - */ - public static String[] getWriterFormatNames() { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets an array of Strings giving the MIME types of the formats supported - * by registered ImageWriter objects. - * - * @return the array of MIME types. - */ - public static String[] getWriterMIMETypes() { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets the Iterator which lists the registered ImageReader objects that are - * able to encode the specified image format. - * - * @param formatName - * the image format name such as "jpeg". - * @return the Iterator of registered ImageWriter. - */ - public static Iterator<ImageWriter> getImageWritersByFormatName(String formatName) { - if (formatName == null) { - throw new NullPointerException("format name cannot be NULL"); - } - - Iterator<ImageWriterSpi> it = registry.getServiceProviders(ImageWriterSpi.class, - new FormatFilter(formatName), true); - - return new SpiIteratorToWritersIteratorWrapper(it); - } - - /** - * Gets the Iterator which lists the registered ImageReader objects that are - * able to encode the specified suffix. - * - * @param fileSuffix - * the file suffix such as "jpg". - * @return the Iterator of registered ImageWriter. - */ - public static Iterator<ImageWriter> getImageWritersBySuffix(String fileSuffix) { - if (fileSuffix == null) { - throw new NullPointerException("suffix cannot be NULL"); - } - Iterator<ImageWriterSpi> it = registry.getServiceProviders(ImageWriterSpi.class, - new SuffixFilter(fileSuffix), true); - return new SpiIteratorToWritersIteratorWrapper(it); - } - - /** - * Gets the Iterator which lists the registered ImageReader objects that are - * able to encode the specified MIME type. - * - * @param MIMEType - * the MIME type such as "image/jpeg". - * @return the Iterator of registered ImageWriter. - */ - public static Iterator<ImageWriter> getImageWritersByMIMEType(String MIMEType) { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets an ImageWriter object which corresponds to the specified - * ImageReader, or returns null if the specified ImageReader is not - * registered. - * - * @param reader - * the specified ImageReader. - * @return the ImageWriter, or null. - */ - public static ImageWriter getImageWriter(ImageReader reader) { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets an ImageReader object which corresponds to the specified - * ImageWriter, or returns null if the specified ImageWriter is not - * registered. - * - * @param writer - * the registered ImageWriter object. - * @return the ImageReader. - */ - public static ImageReader getImageReader(ImageWriter writer) { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Gets the Iterator of ImageWriter objects which are able to encode images - * with the specified ImageTypeSpecifier and format. - * - * @param type - * the ImageTypeSpecifier, which defines layout. - * @param formatName - * the format name. - * @return the Iterator of ImageWriter objects. - */ - public static Iterator<ImageWriter> getImageWriters(ImageTypeSpecifier type, String formatName) { - if (type == null) { - throw new NullPointerException("type cannot be NULL"); - } - - if (formatName == null) { - throw new NullPointerException("format name cannot be NULL"); - } - - Iterator<ImageWriterSpi> it = registry.getServiceProviders(ImageWriterSpi.class, - new FormatAndEncodeFilter(type, formatName), true); - - return new SpiIteratorToWritersIteratorWrapper(it); - } - - /** - * Gets the Iterator of registered ImageTranscoders which are able to - * transcode the metadata of the specified ImageReader object to a suitable - * object for encoding by the specified ImageWriter. - * - * @param reader - * the specified ImageReader. - * @param writer - * the specified ImageWriter. - * @return the Iterator of registered ImageTranscoders. - */ - public static Iterator<ImageTranscoder> getImageTranscoders(ImageReader reader, - ImageWriter writer) { - throw new UnsupportedOperationException("Not supported yet"); - } - - /** - * Reads image data from the specified File and decodes it using the - * appropriate registered ImageReader object. The File is wrapped in an - * ImageInputStream. - * - * @param input - * the File to be read. - * @return the BufferedImage decoded from the specified File, or null. - * @throws IOException - * if an I/O exception has occurred. - */ - public static BufferedImage read(File input) throws IOException { - if (input == null) { - throw new IllegalArgumentException("input == null!"); - } - - ImageInputStream stream = createImageInputStream(input); - return read(stream); - } - - /** - * Reads image data from the specified InputStream and decodes it using an - * appropriate registered an ImageReader object. - * - * @param input - * the InputStream. - * @return the BufferedImage decoded from the specified InputStream, or - * null. - * @throws IOException - * if an I/O exception has occurred. - */ - public static BufferedImage read(InputStream input) throws IOException { - if (input == null) { - throw new IllegalArgumentException("input == null!"); - } - - ImageInputStream stream = createImageInputStream(input); - return read(stream); - } - - /** - * Reads image data from the specified URL and decodes it using the - * appropriate registered ImageReader object. - * - * @param input - * the URL to be read. - * @return the BufferedImage decoded from the specified URL, or null. - * @throws IOException - * if an I/O exception has occurred. - */ - public static BufferedImage read(URL input) throws IOException { - if (input == null) { - throw new IllegalArgumentException("input == null!"); - } - - InputStream stream = input.openStream(); - BufferedImage res = read(stream); - stream.close(); - - return res; - } - - /** - * Reads image data from the specified ImageInputStream and decodes it using - * appropriate registered an ImageReader object. - * - * @param stream - * the ImageInputStream. - * @return the BufferedImage decoded from the specified ImageInputStream, or - * null. - * @throws IOException - * if an I/O exception has occurred. - */ - public static BufferedImage read(ImageInputStream stream) throws IOException { - if (stream == null) { - throw new IllegalArgumentException("stream == null!"); - } - - Iterator<ImageReader> imageReaders = getImageReaders(stream); - if (!imageReaders.hasNext()) { - return null; - } - - ImageReader reader = imageReaders.next(); - reader.setInput(stream, false, true); - BufferedImage res = reader.read(0); - reader.dispose(); - - try { - stream.close(); - } catch (IOException e) { - // Stream could be already closed, proceed silently in this case - } - - return res; - } - - /** - * Writes the specified image in the specified format (using an appropriate - * ImageWriter) to the specified ImageOutputStream. - * - * @param im - * the RenderedImage. - * @param formatName - * the format name. - * @param output - * the ImageOutputStream where Image to be written. - * @return true, if Image is written successfully, false otherwise. - * @throws IOException - * if an I/O exception has occurred. - */ - public static boolean write(RenderedImage im, String formatName, ImageOutputStream output) - throws IOException { - - if (im == null) { - throw new IllegalArgumentException("image cannot be NULL"); - } - if (formatName == null) { - throw new IllegalArgumentException("format name cannot be NULL"); - } - if (output == null) { - throw new IllegalArgumentException("output cannot be NULL"); - } - - Iterator<ImageWriter> it = getImageWriters(ImageTypeSpecifier.createFromRenderedImage(im), - formatName); - if (it.hasNext()) { - ImageWriter writer = it.next(); - writer.setOutput(output); - writer.write(im); - output.flush(); - writer.dispose(); - return true; - } - return false; - } - - /** - * Writes the specified image in the specified format (using an appropriate - * ImageWriter) to the specified File. - * - * @param im - * the RenderedImage. - * @param formatName - * the format name. - * @param output - * the output File where Image to be written. - * @return true, if Image is written successfully, false otherwise. - * @throws IOException - * if an I/O exception has occurred. - */ - public static boolean write(RenderedImage im, String formatName, File output) - throws IOException { - - if (output == null) { - throw new IllegalArgumentException("output cannot be NULL"); - } - - if (output.exists()) { - output.delete(); - } - - ImageOutputStream ios = createImageOutputStream(output); - boolean rt = write(im, formatName, ios); - ios.close(); - return rt; - } - - /** - * Writes the specified image in the specified format (using an appropriate - * ImageWriter) to the specified OutputStream. - * - * @param im - * the RenderedImage. - * @param formatName - * the format name. - * @param output - * the OutputStream where Image is to be written. - * @return true, if Image is written successfully, false otherwise. - * @throws IOException - * if an I/O exception has occurred. - */ - public static boolean write(RenderedImage im, String formatName, OutputStream output) - throws IOException { - - if (output == null) { - throw new IllegalArgumentException("output cannot be NULL"); - } - - ImageOutputStream ios = createImageOutputStream(output); - boolean rt = write(im, formatName, ios); - ios.close(); - return rt; - } - - /** - * Filter to match spi by format name. - */ - static class FormatFilter implements ServiceRegistry.Filter { - - /** - * The name. - */ - private String name; - - /** - * Instantiates a new format filter. - * - * @param name - * the name. - */ - public FormatFilter(String name) { - this.name = name; - } - - public boolean filter(Object provider) { - ImageReaderWriterSpi spi = (ImageReaderWriterSpi)provider; - return Arrays.asList(spi.getFormatNames()).contains(name); - } - } - - /** - * Filter to match spi by format name and encoding possibility. - */ - static class FormatAndEncodeFilter extends FormatFilter { - - /** - * The type. - */ - private ImageTypeSpecifier type; - - /** - * Instantiates a new format and encode filter. - * - * @param type - * the type. - * @param name - * the name. - */ - public FormatAndEncodeFilter(ImageTypeSpecifier type, String name) { - super(name); - this.type = type; - } - - @Override - public boolean filter(Object provider) { - ImageWriterSpi spi = (ImageWriterSpi)provider; - return super.filter(provider) && spi.canEncodeImage(type); - } - } - - /** - * Filter to match spi by suffix. - */ - static class SuffixFilter implements ServiceRegistry.Filter { - - /** - * The suf. - */ - private String suf; - - /** - * Instantiates a new suffix filter. - * - * @param suf - * the suf. - */ - public SuffixFilter(String suf) { - this.suf = suf; - } - - public boolean filter(Object provider) { - ImageReaderWriterSpi spi = (ImageReaderWriterSpi)provider; - return Arrays.asList(spi.getFileSuffixes()).contains(suf); - } - } - - /** - * Filter to match spi by decoding possibility. - */ - static class CanReadFilter implements ServiceRegistry.Filter { - - /** - * The input. - */ - private Object input; - - /** - * Instantiates a new can read filter. - * - * @param input - * the input. - */ - public CanReadFilter(Object input) { - this.input = input; - } - - public boolean filter(Object provider) { - ImageReaderSpi spi = (ImageReaderSpi)provider; - try { - return spi.canDecodeInput(input); - } catch (IOException e) { - return false; - } - } - } - - /** - * Wraps Spi's iterator to ImageWriter iterator. - */ - static class SpiIteratorToWritersIteratorWrapper implements Iterator<ImageWriter> { - - /** - * The backend. - */ - private Iterator<ImageWriterSpi> backend; - - /** - * Instantiates a new spi iterator to writers iterator wrapper. - * - * @param backend - * the backend. - */ - public SpiIteratorToWritersIteratorWrapper(Iterator<ImageWriterSpi> backend) { - this.backend = backend; - } - - /** - * Next. - * - * @return the image writer. - */ - public ImageWriter next() { - try { - return backend.next().createWriterInstance(); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - /** - * Checks for next. - * - * @return true, if successful. - */ - public boolean hasNext() { - return backend.hasNext(); - } - - /** - * Removes the. - */ - public void remove() { - throw new UnsupportedOperationException( - "Use deregisterServiceprovider instead of Iterator.remove()"); - } - } - - /** - * Wraps spi's iterator to ImageReader iterator. - */ - static class SpiIteratorToReadersIteratorWrapper implements Iterator<ImageReader> { - - /** - * The backend. - */ - private Iterator<ImageReaderSpi> backend; - - /** - * Instantiates a new spi iterator to readers iterator wrapper. - * - * @param backend - * the backend. - */ - public SpiIteratorToReadersIteratorWrapper(Iterator<ImageReaderSpi> backend) { - this.backend = backend; - } - - /** - * Next. - * - * @return the image reader. - */ - public ImageReader next() { - try { - return backend.next().createReaderInstance(); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - /** - * Checks for next. - * - * @return true, if successful. - */ - public boolean hasNext() { - return backend.hasNext(); - } - - /** - * Removes the. - */ - public void remove() { - throw new UnsupportedOperationException( - "Use deregisterServiceprovider instead of Iterator.remove()"); - } - } -} |