import java.awt.image.BufferedImage; import java.awt.Image; import java.io.File; import java.io.IOException; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; public class ImageReaderTest2 extends ImageReaderTest1 { public ImageReaderTest2(String filename) { super(filename); } protected Image readImage(String filename) { Iterator readers = ImageIO.getImageReadersBySuffix(getSuffix(filename)); if (readers.hasNext()) { ImageReader reader = (ImageReader)readers.next(); try { ImageInputStream stream = ImageIO.createImageInputStream(new File(filename)); reader.setInput(stream); System.out.println("Format: " + reader.getFormatName()); System.out.println("Aspect Ratio: " + reader.getAspectRatio(0)); System.out.println("Number of Images [Seek File]: " + reader.getNumImages(true)); System.out.println("Thumbnails: " + reader.hasThumbnails(0)); System.out.println("Number of Thumbnails: " + reader.getNumThumbnails(0)); System.out.println("Width: " + reader.getWidth(0)); System.out.println("Height: " + reader.getHeight(0)); if (reader.hasThumbnails(0)) { showThumbnails(reader); } Image image = reader.read(0); reader.dispose(); return image; } catch (IOException ex) { ex.printStackTrace(); } } return null; } private void showThumbnails(ImageReader reader) { try { JLabel[] thumbnails = new JLabel[reader.getNumThumbnails(0)]; for (int i = 0 ; i < reader.getNumThumbnails(0) ; i++) { BufferedImage thumbnail = reader.readThumbnail(0, i); thumbnails[i] = new JLabel(new ImageIcon(thumbnail)); } JPanel panel = new JPanel(); for (int i = 0 ; i < thumbnails.length ; i++) { panel.add(thumbnails[i]); } JOptionPane.showMessageDialog(new JFrame(), panel, "Thumbnails", JOptionPane.PLAIN_MESSAGE); } catch (IOException ex) { ex.printStackTrace(); } } public static void main(String[] args) { if (args.length == 1) { new ImageReaderTest2(args[0]); } else { System.out.println("Usage: java ImageReaderTest2 "); } } }