Add Image IO Read Progress Listener to ImageReader : ImageIO « 2D Graphics « Java Tutorial

import java.awt.image.BufferedImage;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.ImageWriter;
import javax.imageio.event.IIOReadProgressListener;

public class Main{
  static public void main(String args[]) throws Exception {
    FileInputStream fin = new FileInputStream("a.gif");
    Iterator readers = ImageIO.getImageReadersBySuffix("GIF");
    ImageReader imageReader = (ImageReader);
    ImageInputStream iis = ImageIO.createImageInputStream(fin);
    imageReader.setInput(iis, false);

    imageReader.addIIOReadProgressListener(new IIOReadProgressListener() {
      public void imageComplete(ImageReader source) {
        System.out.println("image complete " + source);

      public void imageProgress(ImageReader source, float percentageDone) {
        System.out.println("image progress " + source + ": " + percentageDone + "%");

      public void imageStarted(ImageReader source, int imageIndex) {
        System.out.println("image #" + imageIndex + " started " + source);

      public void readAborted(ImageReader source) {
        System.out.println("read aborted " + source);

      public void sequenceComplete(ImageReader source) {
        System.out.println("sequence complete " + source);

      public void sequenceStarted(ImageReader source, int minIndex) {
        System.out.println("sequence started " + source + ": " + minIndex);

      public void thumbnailComplete(ImageReader source) {
        System.out.println("thumbnail complete " + source);

      public void thumbnailProgress(ImageReader source, float percentageDone) {
        System.out.println("thumbnail started " + source + ": " + percentageDone + "%");

      public void thumbnailStarted(ImageReader source, int imageIndex, int thumbnailIndex) {
        System.out.println("thumbnail progress " + source + ", " + thumbnailIndex + " of "
            + imageIndex);

    BufferedImage image =;

    Iterator imageWriters = ImageIO.getImageWritersBySuffix("JPG");
    ImageWriter imageWriter = (ImageWriter);
    File file = new File("b.JPG");
    ImageOutputStream ios = ImageIO.createImageOutputStream(file);

16.33.1.Use Image.IO to read an image file and display it
16.33.2.Load an Image from a JAR file
16.33.3.Use the getResourceAsStream method
16.33.4.Show ImageIO Info
16.33.5.Add Image IO Read Progress Listener to ImageReader
16.33.6.Get list of unique supported write formats
16.33.7.Get list of unique MIME types that can be read
16.33.8.Get list of unique MIME types that can be written
16.33.9.Get list of unique supported read formats
16.33.10.Returns true if the specified format name can be read
16.33.11.Returns true if the specified format name can be written
16.33.12.Returns true if the specified file extension can be read
16.33.13.Returns true if the specified file extension can be written
16.33.14.Returns true if the specified mime type can be read
16.33.15.Returns true if the specified mime type can be written
16.33.16.Determining the Format of an Image in a File
16.33.17.Detect image type
16.33.18.Read an Image from a file
16.33.19.Read an Image from inputStream
16.33.20.Read an Image from URL
16.33.21.Write Image with different types
16.33.22.Load the image file from a folder or a jar file: use javax.imageio.ImageIO class to read the image file
16.33.23.Detect the file type of the input stream prior to reading the image
16.33.24.Compress and save an image to the disk
16.33.25.Resizes an image
16.33.26.Creates an image compatible with the current display