< prev index next >

src/java.desktop/share/classes/javax/imageio/ImageIO.java

Print this page

        

*** 54,64 **** import sun.awt.AppContext; import sun.security.action.GetPropertyAction; /** * A class containing static convenience methods for locating ! * <code>ImageReader</code>s and <code>ImageWriter</code>s, and * performing simple encoding and decoding. * */ public final class ImageIO { --- 54,64 ---- import sun.awt.AppContext; import sun.security.action.GetPropertyAction; /** * A class containing static convenience methods for locating ! * {@code ImageReader}s and {@code ImageWriter}s, and * performing simple encoding and decoding. * */ public final class ImageIO {
*** 72,99 **** /** * Scans for plug-ins on the application class path, * loads their service provider classes, and registers a service * provider instance for each one found with the ! * <code>IIORegistry</code>. * * <p>This method is needed because the application class path can * theoretically change, or additional plug-ins may become available. * Rather than re-scanning the classpath on every invocation of the * API, the class path is scanned automatically only on the first * invocation. Clients can call this method to prompt a re-scan. * Thus this method need only be invoked by sophisticated applications * which dynamically make new plug-ins available at runtime. * ! * <p> The <code>getResources</code> method of the context ! * <code>ClassLoader</code> is used locate JAR files containing * files named ! * <code>META-INF/services/javax.imageio.spi.</code><i>classname</i>, ! * where <i>classname</i> is one of <code>ImageReaderSpi</code>, ! * <code>ImageWriterSpi</code>, <code>ImageTranscoderSpi</code>, ! * <code>ImageInputStreamSpi</code>, or ! * <code>ImageOutputStreamSpi</code>, along the application class * path. * * <p> The contents of the located files indicate the names of * actual implementation classes which implement the * aforementioned service provider interfaces; the default class --- 72,99 ---- /** * Scans for plug-ins on the application class path, * loads their service provider classes, and registers a service * provider instance for each one found with the ! * {@code IIORegistry}. * * <p>This method is needed because the application class path can * theoretically change, or additional plug-ins may become available. * Rather than re-scanning the classpath on every invocation of the * API, the class path is scanned automatically only on the first * invocation. Clients can call this method to prompt a re-scan. * Thus this method need only be invoked by sophisticated applications * which dynamically make new plug-ins available at runtime. * ! * <p> The {@code getResources} method of the context ! * {@code ClassLoader} is used locate JAR files containing * files named ! * {@code META-INF/services/javax.imageio.spi.}<i>classname</i>, ! * where <i>classname</i> is one of {@code ImageReaderSpi}, ! * {@code ImageWriterSpi}, {@code ImageTranscoderSpi}, ! * {@code ImageInputStreamSpi}, or ! * {@code ImageOutputStreamSpi}, along the application class * path. * * <p> The contents of the located files indicate the names of * actual implementation classes which implement the * aforementioned service provider interfaces; the default class
*** 112,123 **** // ImageInputStreams /** * A class to hold information about caching. Each ! * <code>ThreadGroup</code> will have its own copy ! * via the <code>AppContext</code> mechanism. */ static class CacheInfo { boolean useCache = true; File cacheDirectory = null; Boolean hasPermission = null; --- 112,123 ---- // ImageInputStreams /** * A class to hold information about caching. Each ! * {@code ThreadGroup} will have its own copy ! * via the {@code AppContext} mechanism. */ static class CacheInfo { boolean useCache = true; File cacheDirectory = null; Boolean hasPermission = null;
*** 148,159 **** this.hasPermission = hasPermission; } } /** ! * Returns the <code>CacheInfo</code> object associated with this ! * <code>ThreadGroup</code>. */ private static synchronized CacheInfo getCacheInfo() { AppContext context = AppContext.getAppContext(); CacheInfo info = (CacheInfo)context.get(CacheInfo.class); if (info == null) { --- 148,159 ---- this.hasPermission = hasPermission; } } /** ! * Returns the {@code CacheInfo} object associated with this ! * {@code ThreadGroup}. */ private static synchronized CacheInfo getCacheInfo() { AppContext context = AppContext.getAppContext(); CacheInfo info = (CacheInfo)context.get(CacheInfo.class); if (info == null) {
*** 172,182 **** return AccessController.doPrivileged(a); } /** * Determines whether the caller has write access to the cache ! * directory, stores the result in the <code>CacheInfo</code> object, * and returns the decision. This method helps to prevent mysterious * SecurityExceptions to be thrown when this convenience class is used * in an applet, for example. */ private static boolean hasCachePermission() { --- 172,182 ---- return AccessController.doPrivileged(a); } /** * Determines whether the caller has write access to the cache ! * directory, stores the result in the {@code CacheInfo} object, * and returns the decision. This method helps to prevent mysterious * SecurityExceptions to be thrown when this convenience class is used * in an applet, for example. */ private static boolean hasCachePermission() {
*** 223,288 **** } } /** * Sets a flag indicating whether a disk-based cache file should ! * be used when creating <code>ImageInputStream</code>s and ! * <code>ImageOutputStream</code>s. * ! * <p> When reading from a standard <code>InputStream</code>, it * may be necessary to save previously read information in a cache * since the underlying stream does not allow data to be re-read. * Similarly, when writing to a standard ! * <code>OutputStream</code>, a cache may be used to allow a * previously written value to be changed before flushing it to * the final destination. * * <p> The cache may reside in main memory or on disk. Setting ! * this flag to <code>false</code> disallows the use of disk for * future streams, which may be advantageous when working with * small images, as the overhead of creating and destroying files * is removed. * ! * <p> On startup, the value is set to <code>true</code>. * ! * @param useCache a <code>boolean</code> indicating whether a * cache file should be used, in cases where it is optional. * * @see #getUseCache */ public static void setUseCache(boolean useCache) { getCacheInfo().setUseCache(useCache); } /** ! * Returns the current value set by <code>setUseCache</code>, or ! * <code>true</code> if no explicit setting has been made. * * @return true if a disk-based cache may be used for ! * <code>ImageInputStream</code>s and ! * <code>ImageOutputStream</code>s. * * @see #setUseCache */ public static boolean getUseCache() { return getCacheInfo().getUseCache(); } /** * Sets the directory where cache files are to be created. A ! * value of <code>null</code> indicates that the system-dependent * default temporary-file directory is to be used. If ! * <code>getUseCache</code> returns false, this value is ignored. * ! * @param cacheDirectory a <code>File</code> specifying a directory. * * @see File#createTempFile(String, String, File) * * @exception SecurityException if the security manager denies * access to the directory. ! * @exception IllegalArgumentException if <code>cacheDir</code> is ! * non-<code>null</code> but is not a directory. * * @see #getCacheDirectory */ public static void setCacheDirectory(File cacheDirectory) { if ((cacheDirectory != null) && !(cacheDirectory.isDirectory())) { --- 223,288 ---- } } /** * Sets a flag indicating whether a disk-based cache file should ! * be used when creating {@code ImageInputStream}s and ! * {@code ImageOutputStream}s. * ! * <p> When reading from a standard {@code InputStream}, it * may be necessary to save previously read information in a cache * since the underlying stream does not allow data to be re-read. * Similarly, when writing to a standard ! * {@code OutputStream}, a cache may be used to allow a * previously written value to be changed before flushing it to * the final destination. * * <p> The cache may reside in main memory or on disk. Setting ! * this flag to {@code false} disallows the use of disk for * future streams, which may be advantageous when working with * small images, as the overhead of creating and destroying files * is removed. * ! * <p> On startup, the value is set to {@code true}. * ! * @param useCache a {@code boolean} indicating whether a * cache file should be used, in cases where it is optional. * * @see #getUseCache */ public static void setUseCache(boolean useCache) { getCacheInfo().setUseCache(useCache); } /** ! * Returns the current value set by {@code setUseCache}, or ! * {@code true} if no explicit setting has been made. * * @return true if a disk-based cache may be used for ! * {@code ImageInputStream}s and ! * {@code ImageOutputStream}s. * * @see #setUseCache */ public static boolean getUseCache() { return getCacheInfo().getUseCache(); } /** * Sets the directory where cache files are to be created. A ! * value of {@code null} indicates that the system-dependent * default temporary-file directory is to be used. If ! * {@code getUseCache} returns false, this value is ignored. * ! * @param cacheDirectory a {@code File} specifying a directory. * * @see File#createTempFile(String, String, File) * * @exception SecurityException if the security manager denies * access to the directory. ! * @exception IllegalArgumentException if {@code cacheDir} is ! * non-{@code null} but is not a directory. * * @see #getCacheDirectory */ public static void setCacheDirectory(File cacheDirectory) { if ((cacheDirectory != null) && !(cacheDirectory.isDirectory())) {
*** 292,335 **** getCacheInfo().setHasPermission(null); } /** * Returns the current value set by ! * <code>setCacheDirectory</code>, or <code>null</code> if no * explicit setting has been made. * ! * @return a <code>File</code> indicating the directory where ! * cache files will be created, or <code>null</code> to indicate * the system-dependent default temporary-file directory. * * @see #setCacheDirectory */ public static File getCacheDirectory() { return getCacheInfo().getCacheDirectory(); } /** ! * Returns an <code>ImageInputStream</code> that will take its ! * input from the given <code>Object</code>. The set of ! * <code>ImageInputStreamSpi</code>s registered with the ! * <code>IIORegistry</code> class is queried and the first one * that is able to take input from the supplied object is used to ! * create the returned <code>ImageInputStream</code>. If no ! * suitable <code>ImageInputStreamSpi</code> exists, ! * <code>null</code> is returned. * ! * <p> The current cache settings from <code>getUseCache</code>and ! * <code>getCacheDirectory</code> will be used to control caching. * ! * @param input an <code>Object</code> to be used as an input ! * source, such as a <code>File</code>, readable ! * <code>RandomAccessFile</code>, or <code>InputStream</code>. * ! * @return an <code>ImageInputStream</code>, or <code>null</code>. * ! * @exception IllegalArgumentException if <code>input</code> ! * is <code>null</code>. * @exception IOException if a cache file is needed but cannot be * created. * * @see javax.imageio.spi.ImageInputStreamSpi */ --- 292,335 ---- getCacheInfo().setHasPermission(null); } /** * Returns the current value set by ! * {@code setCacheDirectory}, or {@code null} if no * explicit setting has been made. * ! * @return a {@code File} indicating the directory where ! * cache files will be created, or {@code null} to indicate * the system-dependent default temporary-file directory. * * @see #setCacheDirectory */ public static File getCacheDirectory() { return getCacheInfo().getCacheDirectory(); } /** ! * Returns an {@code ImageInputStream} that will take its ! * input from the given {@code Object}. The set of ! * {@code ImageInputStreamSpi}s registered with the ! * {@code IIORegistry} class is queried and the first one * that is able to take input from the supplied object is used to ! * create the returned {@code ImageInputStream}. If no ! * suitable {@code ImageInputStreamSpi} exists, ! * {@code null} is returned. * ! * <p> The current cache settings from {@code getUseCache} and ! * {@code getCacheDirectory} will be used to control caching. * ! * @param input an {@code Object} to be used as an input ! * source, such as a {@code File}, readable ! * {@code RandomAccessFile}, or {@code InputStream}. * ! * @return an {@code ImageInputStream}, or {@code null}. * ! * @exception IllegalArgumentException if {@code input} ! * is {@code null}. * @exception IOException if a cache file is needed but cannot be * created. * * @see javax.imageio.spi.ImageInputStreamSpi */
*** 367,397 **** } // ImageOutputStreams /** ! * Returns an <code>ImageOutputStream</code> that will send its ! * output to the given <code>Object</code>. The set of ! * <code>ImageOutputStreamSpi</code>s registered with the ! * <code>IIORegistry</code> class is queried and the first one * that is able to send output from the supplied object is used to ! * create the returned <code>ImageOutputStream</code>. If no ! * suitable <code>ImageOutputStreamSpi</code> exists, ! * <code>null</code> is returned. ! * ! * <p> The current cache settings from <code>getUseCache</code>and ! * <code>getCacheDirectory</code> will be used to control caching. ! * ! * @param output an <code>Object</code> to be used as an output ! * destination, such as a <code>File</code>, writable ! * <code>RandomAccessFile</code>, or <code>OutputStream</code>. * ! * @return an <code>ImageOutputStream</code>, or ! * <code>null</code>. * ! * @exception IllegalArgumentException if <code>output</code> is ! * <code>null</code>. * @exception IOException if a cache file is needed but cannot be * created. * * @see javax.imageio.spi.ImageOutputStreamSpi */ --- 367,397 ---- } // ImageOutputStreams /** ! * Returns an {@code ImageOutputStream} that will send its ! * output to the given {@code Object}. The set of ! * {@code ImageOutputStreamSpi}s registered with the ! * {@code IIORegistry} class is queried and the first one * that is able to send output from the supplied object is used to ! * create the returned {@code ImageOutputStream}. If no ! * suitable {@code ImageOutputStreamSpi} exists, ! * {@code null} is returned. ! * ! * <p> The current cache settings from {@code getUseCache} and ! * {@code getCacheDirectory} will be used to control caching. ! * ! * @param output an {@code Object} to be used as an output ! * destination, such as a {@code File}, writable ! * {@code RandomAccessFile}, or {@code OutputStream}. * ! * @return an {@code ImageOutputStream}, or ! * {@code null}. * ! * @exception IllegalArgumentException if {@code output} is ! * {@code null}. * @exception IOException if a cache file is needed but cannot be * created. * * @see javax.imageio.spi.ImageOutputStreamSpi */
*** 472,510 **** } // Readers /** ! * Returns an array of <code>String</code>s listing all of the * informal format names understood by the current set of registered * readers. * ! * @return an array of <code>String</code>s. */ public static String[] getReaderFormatNames() { return getReaderWriterInfo(ImageReaderSpi.class, SpiInfo.FORMAT_NAMES); } /** ! * Returns an array of <code>String</code>s listing all of the * MIME types understood by the current set of registered * readers. * ! * @return an array of <code>String</code>s. */ public static String[] getReaderMIMETypes() { return getReaderWriterInfo(ImageReaderSpi.class, SpiInfo.MIME_TYPES); } /** ! * Returns an array of <code>String</code>s listing all of the * file suffixes associated with the formats understood * by the current set of registered readers. * ! * @return an array of <code>String</code>s. * @since 1.6 */ public static String[] getReaderFileSuffixes() { return getReaderWriterInfo(ImageReaderSpi.class, SpiInfo.FILE_SUFFIXES); --- 472,510 ---- } // Readers /** ! * Returns an array of {@code String}s listing all of the * informal format names understood by the current set of registered * readers. * ! * @return an array of {@code String}s. */ public static String[] getReaderFormatNames() { return getReaderWriterInfo(ImageReaderSpi.class, SpiInfo.FORMAT_NAMES); } /** ! * Returns an array of {@code String}s listing all of the * MIME types understood by the current set of registered * readers. * ! * @return an array of {@code String}s. */ public static String[] getReaderMIMETypes() { return getReaderWriterInfo(ImageReaderSpi.class, SpiInfo.MIME_TYPES); } /** ! * Returns an array of {@code String}s listing all of the * file suffixes associated with the formats understood * by the current set of registered readers. * ! * @return an array of {@code String}s. * @since 1.6 */ public static String[] getReaderFileSuffixes() { return getReaderWriterInfo(ImageReaderSpi.class, SpiInfo.FILE_SUFFIXES);
*** 616,640 **** } } } /** ! * Returns an <code>Iterator</code> containing all currently ! * registered <code>ImageReader</code>s that claim to be able to ! * decode the supplied <code>Object</code>, typically an ! * <code>ImageInputStream</code>. * * <p> The stream position is left at its prior position upon * exit from this method. * ! * @param input an <code>ImageInputStream</code> or other ! * <code>Object</code> containing encoded image data. * ! * @return an <code>Iterator</code> containing <code>ImageReader</code>s. * ! * @exception IllegalArgumentException if <code>input</code> is ! * <code>null</code>. * * @see javax.imageio.spi.ImageReaderSpi#canDecodeInput */ public static Iterator<ImageReader> getImageReaders(Object input) { if (input == null) { --- 616,640 ---- } } } /** ! * Returns an {@code Iterator} containing all currently ! * registered {@code ImageReader}s that claim to be able to ! * decode the supplied {@code Object}, typically an ! * {@code ImageInputStream}. * * <p> The stream position is left at its prior position upon * exit from this method. * ! * @param input an {@code ImageInputStream} or other ! * {@code Object} containing encoded image data. * ! * @return an {@code Iterator} containing {@code ImageReader}s. * ! * @exception IllegalArgumentException if {@code input} is ! * {@code null}. * * @see javax.imageio.spi.ImageReaderSpi#canDecodeInput */ public static Iterator<ImageReader> getImageReaders(Object input) { if (input == null) {
*** 679,700 **** e.printStackTrace(); } } /** ! * Returns an <code>Iterator</code> containing all currently ! * registered <code>ImageReader</code>s that claim to be able to * decode 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>ImageReader</code>s. * ! * @exception IllegalArgumentException if <code>formatName</code> ! * is <code>null</code>. * * @see javax.imageio.spi.ImageReaderSpi#getFormatNames */ public static Iterator<ImageReader> getImageReadersByFormatName(String formatName) --- 679,700 ---- e.printStackTrace(); } } /** ! * Returns an {@code Iterator} containing all currently ! * registered {@code ImageReader}s that claim to be able to * decode the named format. * ! * @param formatName a {@code String} containing the informal * name of a format (<i>e.g.</i>, "jpeg" or "tiff". * ! * @return an {@code Iterator} containing ! * {@code ImageReader}s. * ! * @exception IllegalArgumentException if {@code formatName} ! * is {@code null}. * * @see javax.imageio.spi.ImageReaderSpi#getFormatNames */ public static Iterator<ImageReader> getImageReadersByFormatName(String formatName)
*** 714,735 **** } return new ImageReaderIterator(iter); } /** ! * Returns an <code>Iterator</code> containing all currently ! * registered <code>ImageReader</code>s that claim to be able to * decode 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>ImageReader</code>s. * ! * @exception IllegalArgumentException if <code>fileSuffix</code> ! * is <code>null</code>. * * @see javax.imageio.spi.ImageReaderSpi#getFileSuffixes */ public static Iterator<ImageReader> getImageReadersBySuffix(String fileSuffix) --- 714,735 ---- } return new ImageReaderIterator(iter); } /** ! * Returns an {@code Iterator} containing all currently ! * registered {@code ImageReader}s that claim to be able to * decode files with the given suffix. * ! * @param fileSuffix a {@code String} containing a file * suffix (<i>e.g.</i>, "jpg" or "tiff"). * ! * @return an {@code Iterator} containing ! * {@code ImageReader}s. * ! * @exception IllegalArgumentException if {@code fileSuffix} ! * is {@code null}. * * @see javax.imageio.spi.ImageReaderSpi#getFileSuffixes */ public static Iterator<ImageReader> getImageReadersBySuffix(String fileSuffix)
*** 749,770 **** } return new ImageReaderIterator(iter); } /** ! * Returns an <code>Iterator</code> containing all currently ! * registered <code>ImageReader</code>s that claim to be able to * decode 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>ImageReader</code>s. * ! * @exception IllegalArgumentException if <code>MIMEType</code> is ! * <code>null</code>. * * @see javax.imageio.spi.ImageReaderSpi#getMIMETypes */ public static Iterator<ImageReader> getImageReadersByMIMEType(String MIMEType) --- 749,770 ---- } return new ImageReaderIterator(iter); } /** ! * Returns an {@code Iterator} containing all currently ! * registered {@code ImageReader}s that claim to be able to * decode 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 ImageReader}s. * ! * @exception IllegalArgumentException if {@code MIMEType} is ! * {@code null}. * * @see javax.imageio.spi.ImageReaderSpi#getMIMETypes */ public static Iterator<ImageReader> getImageReadersByMIMEType(String MIMEType)
*** 786,824 **** } // Writers /** ! * Returns an array of <code>String</code>s listing all of the * informal format names understood by the current set of registered * writers. * ! * @return an array of <code>String</code>s. */ public static String[] getWriterFormatNames() { return getReaderWriterInfo(ImageWriterSpi.class, SpiInfo.FORMAT_NAMES); } /** ! * Returns an array of <code>String</code>s listing all of the * MIME types understood by the current set of registered * writers. * ! * @return an array of <code>String</code>s. */ public static String[] getWriterMIMETypes() { return getReaderWriterInfo(ImageWriterSpi.class, SpiInfo.MIME_TYPES); } /** ! * Returns an array of <code>String</code>s listing all of the * file suffixes associated with the formats understood * by the current set of registered writers. * ! * @return an array of <code>String</code>s. * @since 1.6 */ public static String[] getWriterFileSuffixes() { return getReaderWriterInfo(ImageWriterSpi.class, SpiInfo.FILE_SUFFIXES); --- 786,824 ---- } // Writers /** ! * Returns an array of {@code String}s listing all of the * informal format names understood by the current set of registered * writers. * ! * @return an array of {@code String}s. */ public static String[] getWriterFormatNames() { return getReaderWriterInfo(ImageWriterSpi.class, SpiInfo.FORMAT_NAMES); } /** ! * Returns an array of {@code String}s listing all of the * MIME types understood by the current set of registered * writers. * ! * @return an array of {@code String}s. */ public static String[] getWriterMIMETypes() { return getReaderWriterInfo(ImageWriterSpi.class, SpiInfo.MIME_TYPES); } /** ! * Returns an array of {@code String}s listing all of the * file suffixes associated with the formats understood * by the current set of registered writers. * ! * @return an array of {@code String}s. * @since 1.6 */ public static String[] getWriterFileSuffixes() { return getReaderWriterInfo(ImageWriterSpi.class, SpiInfo.FILE_SUFFIXES);
*** 862,883 **** return false; } /** ! * 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) --- 862,883 ---- return false; } /** ! * Returns an {@code Iterator} containing all currently ! * registered {@code ImageWriter}s that claim to be able to * encode the named format. * ! * @param formatName a {@code String} containing the informal * name of a format (<i>e.g.</i>, "jpeg" or "tiff". * ! * @return an {@code Iterator} containing ! * {@code ImageWriter}s. * ! * @exception IllegalArgumentException if {@code formatName} is ! * {@code null}. * * @see javax.imageio.spi.ImageWriterSpi#getFormatNames */ public static Iterator<ImageWriter> getImageWritersByFormatName(String formatName)
*** 897,917 **** } 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) --- 897,917 ---- } 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 suffix. * ! * @param fileSuffix a {@code String} containing a file * suffix (<i>e.g.</i>, "jpg" or "tiff"). * ! * @return an {@code Iterator} containing {@code ImageWriter}s. * ! * @exception IllegalArgumentException if {@code fileSuffix} is ! * {@code null}. * * @see javax.imageio.spi.ImageWriterSpi#getFileSuffixes */ public static Iterator<ImageWriter> getImageWritersBySuffix(String fileSuffix)
*** 931,951 **** } 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) --- 931,951 ---- } 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)
*** 965,998 **** } return new ImageWriterIterator(iter); } /** ! * Returns an <code>ImageWriter</code>corresponding to the given ! * <code>ImageReader</code>, if there is one, or <code>null</code> ! * if the plug-in for this <code>ImageReader</code> does not ! * specify a corresponding <code>ImageWriter</code>, or if the ! * given <code>ImageReader</code> is not registered. This ! * mechanism may be used to obtain an <code>ImageWriter</code> * that will understand the internal structure of non-pixel ! * metadata (as encoded by <code>IIOMetadata</code> objects) ! * generated by the <code>ImageReader</code>. By obtaining this ! * data from the <code>ImageReader</code> and passing it on to the ! * <code>ImageWriter</code> obtained with this method, a client * program can read an image, modify it in some way, and write it * back out preserving all metadata, without having to understand * anything about the structure of the metadata, or even about * the image format. Note that this method returns the * "preferred" writer, which is the first in the list returned by ! * <code>javax.imageio.spi.ImageReaderSpi.getImageWriterSpiNames()</code>. * ! * @param reader an instance of a registered <code>ImageReader</code>. * ! * @return an <code>ImageWriter</code>, or null. * ! * @exception IllegalArgumentException if <code>reader</code> is ! * <code>null</code>. * * @see #getImageReader(ImageWriter) * @see javax.imageio.spi.ImageReaderSpi#getImageWriterSpiNames() */ public static ImageWriter getImageWriter(ImageReader reader) { --- 965,998 ---- } return new ImageWriterIterator(iter); } /** ! * Returns an {@code ImageWriter} corresponding to the given ! * {@code ImageReader}, if there is one, or {@code null} ! * if the plug-in for this {@code ImageReader} does not ! * specify a corresponding {@code ImageWriter}, or if the ! * given {@code ImageReader} is not registered. This ! * mechanism may be used to obtain an {@code ImageWriter} * that will understand the internal structure of non-pixel ! * metadata (as encoded by {@code IIOMetadata} objects) ! * generated by the {@code ImageReader}. By obtaining this ! * data from the {@code ImageReader} and passing it on to the ! * {@code ImageWriter} obtained with this method, a client * program can read an image, modify it in some way, and write it * back out preserving all metadata, without having to understand * anything about the structure of the metadata, or even about * the image format. Note that this method returns the * "preferred" writer, which is the first in the list returned by ! * {@code javax.imageio.spi.ImageReaderSpi.getImageWriterSpiNames()}. * ! * @param reader an instance of a registered {@code ImageReader}. * ! * @return an {@code ImageWriter}, or null. * ! * @exception IllegalArgumentException if {@code reader} is ! * {@code null}. * * @see #getImageReader(ImageWriter) * @see javax.imageio.spi.ImageReaderSpi#getImageWriterSpiNames() */ public static ImageWriter getImageWriter(ImageReader reader) {
*** 1052,1078 **** return null; } } /** ! * Returns an <code>ImageReader</code>corresponding to the given ! * <code>ImageWriter</code>, if there is one, or <code>null</code> ! * if the plug-in for this <code>ImageWriter</code> does not ! * specify a corresponding <code>ImageReader</code>, or if the ! * given <code>ImageWriter</code> is not registered. This method * is provided principally for symmetry with ! * <code>getImageWriter(ImageReader)</code>. Note that this * method returns the "preferred" reader, which is the first in * the list returned by ! * javax.imageio.spi.ImageWriterSpi.<code>getImageReaderSpiNames()</code>. * ! * @param writer an instance of a registered <code>ImageWriter</code>. * ! * @return an <code>ImageReader</code>, or null. * ! * @exception IllegalArgumentException if <code>writer</code> is ! * <code>null</code>. * * @see #getImageWriter(ImageReader) * @see javax.imageio.spi.ImageWriterSpi#getImageReaderSpiNames() */ public static ImageReader getImageReader(ImageWriter writer) { --- 1052,1078 ---- return null; } } /** ! * Returns an {@code ImageReader} corresponding to the given ! * {@code ImageWriter}, if there is one, or {@code null} ! * if the plug-in for this {@code ImageWriter} does not ! * specify a corresponding {@code ImageReader}, or if the ! * given {@code ImageWriter} is not registered. This method * is provided principally for symmetry with ! * {@code getImageWriter(ImageReader)}. Note that this * method returns the "preferred" reader, which is the first in * the list returned by ! * javax.imageio.spi.ImageWriterSpi.{@code getImageReaderSpiNames()}. * ! * @param writer an instance of a registered {@code ImageWriter}. * ! * @return an {@code ImageReader}, or null. * ! * @exception IllegalArgumentException if {@code writer} is ! * {@code null}. * * @see #getImageWriter(ImageReader) * @see javax.imageio.spi.ImageWriterSpi#getImageReaderSpiNames() */ public static ImageReader getImageReader(ImageWriter writer) {
*** 1132,1154 **** return null; } } /** ! * 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) --- 1132,1154 ---- return null; } } /** ! * 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)
*** 1219,1241 **** writerName.equals(writerSpiName)); } } /** ! * 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) { --- 1219,1241 ---- writerName.equals(writerSpiName)); } } /** ! * Returns an {@code Iterator} containing all currently ! * registered {@code ImageTranscoder}s that claim to be * able to transcode between the metadata of the given ! * {@code ImageReader} and {@code ImageWriter}. * ! * @param reader an {@code ImageReader}. ! * @param writer an {@code ImageWriter}. * ! * @return an {@code Iterator} containing ! * {@code ImageTranscoder}s. * ! * @exception IllegalArgumentException if {@code reader} or ! * {@code writer} is {@code null}. */ public static Iterator<ImageTranscoder> getImageTranscoders(ImageReader reader, ImageWriter writer) { if (reader == null) {
*** 1261,1298 **** } // All-in-one methods /** ! * Returns a <code>BufferedImage</code> as the result of decoding ! * a supplied <code>File</code> with an <code>ImageReader</code> * chosen automatically from among those currently registered. ! * The <code>File</code> is wrapped in an ! * <code>ImageInputStream</code>. If no registered ! * <code>ImageReader</code> claims to be able to read the ! * resulting stream, <code>null</code> is returned. ! * ! * <p> The current cache settings from <code>getUseCache</code>and ! * <code>getCacheDirectory</code> will be used to control caching in the ! * <code>ImageInputStream</code> that is created. ! * ! * <p> Note that there is no <code>read</code> method that takes a ! * filename as a <code>String</code>; use this method instead after ! * creating a <code>File</code> from the filename. * * <p> This method does not attempt to locate ! * <code>ImageReader</code>s that can read directly from a ! * <code>File</code>; that may be accomplished using ! * <code>IIORegistry</code> and <code>ImageReaderSpi</code>. * ! * @param input a <code>File</code> to read from. * ! * @return a <code>BufferedImage</code> containing the decoded ! * contents of the input, or <code>null</code>. * ! * @exception IllegalArgumentException if <code>input</code> is ! * <code>null</code>. * @exception IOException if an error occurs during reading. */ public static BufferedImage read(File input) throws IOException { if (input == null) { throw new IllegalArgumentException("input == null!"); --- 1261,1298 ---- } // All-in-one methods /** ! * Returns a {@code BufferedImage} as the result of decoding ! * a supplied {@code File} with an {@code ImageReader} * chosen automatically from among those currently registered. ! * The {@code File} is wrapped in an ! * {@code ImageInputStream}. If no registered ! * {@code ImageReader} claims to be able to read the ! * resulting stream, {@code null} is returned. ! * ! * <p> The current cache settings from {@code getUseCache} and ! * {@code getCacheDirectory} will be used to control caching in the ! * {@code ImageInputStream} that is created. ! * ! * <p> Note that there is no {@code read} method that takes a ! * filename as a {@code String}; use this method instead after ! * creating a {@code File} from the filename. * * <p> This method does not attempt to locate ! * {@code ImageReader}s that can read directly from a ! * {@code File}; that may be accomplished using ! * {@code IIORegistry} and {@code ImageReaderSpi}. * ! * @param input a {@code File} to read from. * ! * @return a {@code BufferedImage} containing the decoded ! * contents of the input, or {@code null}. * ! * @exception IllegalArgumentException if {@code input} is ! * {@code null}. * @exception IOException if an error occurs during reading. */ public static BufferedImage read(File input) throws IOException { if (input == null) { throw new IllegalArgumentException("input == null!");
*** 1311,1348 **** } return bi; } /** ! * Returns a <code>BufferedImage</code> as the result of decoding ! * a supplied <code>InputStream</code> with an <code>ImageReader</code> * chosen automatically from among those currently registered. ! * The <code>InputStream</code> is wrapped in an ! * <code>ImageInputStream</code>. If no registered ! * <code>ImageReader</code> claims to be able to read the ! * resulting stream, <code>null</code> is returned. ! * ! * <p> The current cache settings from <code>getUseCache</code>and ! * <code>getCacheDirectory</code> will be used to control caching in the ! * <code>ImageInputStream</code> that is created. * * <p> This method does not attempt to locate ! * <code>ImageReader</code>s that can read directly from an ! * <code>InputStream</code>; that may be accomplished using ! * <code>IIORegistry</code> and <code>ImageReaderSpi</code>. * * <p> This method <em>does not</em> close the provided ! * <code>InputStream</code> after the read operation has completed; * it is the responsibility of the caller to close the stream, if desired. * ! * @param input an <code>InputStream</code> to read from. * ! * @return a <code>BufferedImage</code> containing the decoded ! * contents of the input, or <code>null</code>. * ! * @exception IllegalArgumentException if <code>input</code> is ! * <code>null</code>. * @exception IOException if an error occurs during reading. */ public static BufferedImage read(InputStream input) throws IOException { if (input == null) { throw new IllegalArgumentException("input == null!"); --- 1311,1348 ---- } return bi; } /** ! * Returns a {@code BufferedImage} as the result of decoding ! * a supplied {@code InputStream} with an {@code ImageReader} * chosen automatically from among those currently registered. ! * The {@code InputStream} is wrapped in an ! * {@code ImageInputStream}. If no registered ! * {@code ImageReader} claims to be able to read the ! * resulting stream, {@code null} is returned. ! * ! * <p> The current cache settings from {@code getUseCache} and ! * {@code getCacheDirectory} will be used to control caching in the ! * {@code ImageInputStream} that is created. * * <p> This method does not attempt to locate ! * {@code ImageReader}s that can read directly from an ! * {@code InputStream}; that may be accomplished using ! * {@code IIORegistry} and {@code ImageReaderSpi}. * * <p> This method <em>does not</em> close the provided ! * {@code InputStream} after the read operation has completed; * it is the responsibility of the caller to close the stream, if desired. * ! * @param input an {@code InputStream} to read from. * ! * @return a {@code BufferedImage} containing the decoded ! * contents of the input, or {@code null}. * ! * @exception IllegalArgumentException if {@code input} is ! * {@code null}. * @exception IOException if an error occurs during reading. */ public static BufferedImage read(InputStream input) throws IOException { if (input == null) { throw new IllegalArgumentException("input == null!");
*** 1355,1388 **** } return bi; } /** ! * Returns a <code>BufferedImage</code> as the result of decoding ! * a supplied <code>URL</code> with an <code>ImageReader</code> * chosen automatically from among those currently registered. An ! * <code>InputStream</code> is obtained from the <code>URL</code>, ! * which is wrapped in an <code>ImageInputStream</code>. If no ! * registered <code>ImageReader</code> claims to be able to read ! * the resulting stream, <code>null</code> is returned. ! * ! * <p> The current cache settings from <code>getUseCache</code>and ! * <code>getCacheDirectory</code> will be used to control caching in the ! * <code>ImageInputStream</code> that is created. * * <p> This method does not attempt to locate ! * <code>ImageReader</code>s that can read directly from a ! * <code>URL</code>; that may be accomplished using ! * <code>IIORegistry</code> and <code>ImageReaderSpi</code>. * ! * @param input a <code>URL</code> to read from. * ! * @return a <code>BufferedImage</code> containing the decoded ! * contents of the input, or <code>null</code>. * ! * @exception IllegalArgumentException if <code>input</code> is ! * <code>null</code>. * @exception IOException if an error occurs during reading. */ public static BufferedImage read(URL input) throws IOException { if (input == null) { throw new IllegalArgumentException("input == null!"); --- 1355,1388 ---- } return bi; } /** ! * Returns a {@code BufferedImage} as the result of decoding ! * a supplied {@code URL} with an {@code ImageReader} * chosen automatically from among those currently registered. An ! * {@code InputStream} is obtained from the {@code URL}, ! * which is wrapped in an {@code ImageInputStream}. If no ! * registered {@code ImageReader} claims to be able to read ! * the resulting stream, {@code null} is returned. ! * ! * <p> The current cache settings from {@code getUseCache} and ! * {@code getCacheDirectory} will be used to control caching in the ! * {@code ImageInputStream} that is created. * * <p> This method does not attempt to locate ! * {@code ImageReader}s that can read directly from a ! * {@code URL}; that may be accomplished using ! * {@code IIORegistry} and {@code ImageReaderSpi}. * ! * @param input a {@code URL} to read from. * ! * @return a {@code BufferedImage} containing the decoded ! * contents of the input, or {@code null}. * ! * @exception IllegalArgumentException if {@code input} is ! * {@code null}. * @exception IOException if an error occurs during reading. */ public static BufferedImage read(URL input) throws IOException { if (input == null) { throw new IllegalArgumentException("input == null!");
*** 1406,1434 **** } return bi; } /** ! * Returns a <code>BufferedImage</code> as the result of decoding ! * a supplied <code>ImageInputStream</code> with an ! * <code>ImageReader</code> chosen automatically from among those * currently registered. If no registered ! * <code>ImageReader</code> claims to be able to read the stream, ! * <code>null</code> is returned. * * <p> Unlike most other methods in this class, this method <em>does</em> ! * close the provided <code>ImageInputStream</code> after the read ! * operation has completed, unless <code>null</code> is returned, * in which case this method <em>does not</em> close the stream. * ! * @param stream an <code>ImageInputStream</code> to read from. * ! * @return a <code>BufferedImage</code> containing the decoded ! * contents of the input, or <code>null</code>. * ! * @exception IllegalArgumentException if <code>stream</code> is ! * <code>null</code>. * @exception IOException if an error occurs during reading. */ public static BufferedImage read(ImageInputStream stream) throws IOException { if (stream == null) { --- 1406,1434 ---- } return bi; } /** ! * Returns a {@code BufferedImage} as the result of decoding ! * a supplied {@code ImageInputStream} with an ! * {@code ImageReader} chosen automatically from among those * currently registered. If no registered ! * {@code ImageReader} claims to be able to read the stream, ! * {@code null} is returned. * * <p> Unlike most other methods in this class, this method <em>does</em> ! * close the provided {@code ImageInputStream} after the read ! * operation has completed, unless {@code null} is returned, * in which case this method <em>does not</em> close the stream. * ! * @param stream an {@code ImageInputStream} to read from. * ! * @return a {@code BufferedImage} containing the decoded ! * contents of the input, or {@code null}. * ! * @exception IllegalArgumentException if {@code stream} is ! * {@code null}. * @exception IOException if an error occurs during reading. */ public static BufferedImage read(ImageInputStream stream) throws IOException { if (stream == null) {
*** 1452,1481 **** } return bi; } /** ! * Writes an image using the an arbitrary <code>ImageWriter</code> * that supports the given format to an ! * <code>ImageOutputStream</code>. The image is written to the ! * <code>ImageOutputStream</code> starting at the current stream * pointer, overwriting existing stream data from that point * forward, if present. * * <p> This method <em>does not</em> close the provided ! * <code>ImageOutputStream</code> after the write operation has completed; * it is the responsibility of the caller to close the stream, if desired. * ! * @param im a <code>RenderedImage</code> to be written. ! * @param formatName a <code>String</code> containing the informal * name of the format. ! * @param output an <code>ImageOutputStream</code> to be written to. * ! * @return <code>false</code> if no appropriate writer is found. * * @exception IllegalArgumentException if any parameter is ! * <code>null</code>. * @exception IOException if an error occurs during writing. */ public static boolean write(RenderedImage im, String formatName, ImageOutputStream output) throws IOException { --- 1452,1481 ---- } return bi; } /** ! * Writes an image using the an arbitrary {@code ImageWriter} * that supports the given format to an ! * {@code ImageOutputStream}. The image is written to the ! * {@code ImageOutputStream} starting at the current stream * pointer, overwriting existing stream data from that point * forward, if present. * * <p> This method <em>does not</em> close the provided ! * {@code ImageOutputStream} after the write operation has completed; * it is the responsibility of the caller to close the stream, if desired. * ! * @param im a {@code RenderedImage} to be written. ! * @param formatName a {@code String} containing the informal * name of the format. ! * @param output an {@code ImageOutputStream} to be written to. * ! * @return {@code false} if no appropriate writer is found. * * @exception IllegalArgumentException if any parameter is ! * {@code null}. * @exception IOException if an error occurs during writing. */ public static boolean write(RenderedImage im, String formatName, ImageOutputStream output) throws IOException {
*** 1491,1514 **** return doWrite(im, getWriter(im, formatName), output); } /** ! * Writes an image using an arbitrary <code>ImageWriter</code> ! * that supports the given format to a <code>File</code>. If ! * there is already a <code>File</code> present, its contents are * discarded. * ! * @param im a <code>RenderedImage</code> to be written. ! * @param formatName a <code>String</code> containing the informal * name of the format. ! * @param output a <code>File</code> to be written to. * ! * @return <code>false</code> if no appropriate writer is found. * * @exception IllegalArgumentException if any parameter is ! * <code>null</code>. * @exception IOException if an error occurs during writing. */ public static boolean write(RenderedImage im, String formatName, File output) throws IOException { --- 1491,1514 ---- return doWrite(im, getWriter(im, formatName), output); } /** ! * Writes an image using an arbitrary {@code ImageWriter} ! * that supports the given format to a {@code File}. If ! * there is already a {@code File} present, its contents are * discarded. * ! * @param im a {@code RenderedImage} to be written. ! * @param formatName a {@code String} containing the informal * name of the format. ! * @param output a {@code File} to be written to. * ! * @return {@code false} if no appropriate writer is found. * * @exception IllegalArgumentException if any parameter is ! * {@code null}. * @exception IOException if an error occurs during writing. */ public static boolean write(RenderedImage im, String formatName, File output) throws IOException {
*** 1538,1566 **** stream.close(); } } /** ! * Writes an image using an arbitrary <code>ImageWriter</code> ! * that supports the given format to an <code>OutputStream</code>. * * <p> This method <em>does not</em> close the provided ! * <code>OutputStream</code> after the write operation has completed; * it is the responsibility of the caller to close the stream, if desired. * ! * <p> The current cache settings from <code>getUseCache</code>and ! * <code>getCacheDirectory</code> will be used to control caching. * ! * @param im a <code>RenderedImage</code> to be written. ! * @param formatName a <code>String</code> containing the informal * name of the format. ! * @param output an <code>OutputStream</code> to be written to. * ! * @return <code>false</code> if no appropriate writer is found. * * @exception IllegalArgumentException if any parameter is ! * <code>null</code>. * @exception IOException if an error occurs during writing. */ public static boolean write(RenderedImage im, String formatName, OutputStream output) throws IOException { --- 1538,1566 ---- stream.close(); } } /** ! * Writes an image using an arbitrary {@code ImageWriter} ! * that supports the given format to an {@code OutputStream}. * * <p> This method <em>does not</em> close the provided ! * {@code OutputStream} after the write operation has completed; * it is the responsibility of the caller to close the stream, if desired. * ! * <p> The current cache settings from {@code getUseCache} and ! * {@code getCacheDirectory} will be used to control caching. * ! * @param im a {@code RenderedImage} to be written. ! * @param formatName a {@code String} containing the informal * name of the format. ! * @param output an {@code OutputStream} to be written to. * ! * @return {@code false} if no appropriate writer is found. * * @exception IllegalArgumentException if any parameter is ! * {@code null}. * @exception IOException if an error occurs during writing. */ public static boolean write(RenderedImage im, String formatName, OutputStream output) throws IOException {
*** 1580,1591 **** stream.close(); } } /** ! * Returns <code>ImageWriter</code> instance according to given ! * rendered image and image format or <code>null</code> if there * is no appropriate writer. */ private static ImageWriter getWriter(RenderedImage im, String formatName) { ImageTypeSpecifier type = --- 1580,1591 ---- stream.close(); } } /** ! * Returns {@code ImageWriter} instance according to given ! * rendered image and image format or {@code null} if there * is no appropriate writer. */ private static ImageWriter getWriter(RenderedImage im, String formatName) { ImageTypeSpecifier type =
< prev index next >