pixelmed
TestImageIO.java
Go to the documentation of this file.
1 /* Copyright (c) 2004-2015, David A. Clunie DBA Pixelmed Publishing. All rights reserved. */
2 package com.pixelmed.imageio;
3 
4 import java.io.*;
5 import java.util.*;
6 import java.awt.*;
7 import java.awt.event.*;
8 import java.awt.image.*;
9 import javax.imageio.*;
10 import javax.imageio.spi.*;
11 import javax.swing.*;
12 import javax.swing.event.*;
13 
14 public class TestImageIO extends JFrame {
15 
16  private static final String identString = "@(#) $Header: /userland/cvs/codec/com/pixelmed/imageio/TestImageIO.java,v 1.4 2016/01/16 15:01:48 dclunie Exp $";
17 
18  class SingleImagePanel extends JComponent {
19 
20  BufferedImage image;
21 
22  SingleImagePanel(String args[]) throws Exception {
23  File f = new File(args[0]);
24  try {
25  if (args.length == 1) {
26  image = ImageIO.read(f);
27  }
28  else {
29  Iterator readers = ImageIO.getImageReadersByFormatName(args[1]);
30  int whichReader = Integer.valueOf(args[2]).intValue();
31  int i=0;
32  while (readers.hasNext()) {
33  ImageReader reader = (ImageReader)readers.next();
34  if (i == whichReader) {
35  ImageReaderSpi spi = reader.getOriginatingProvider();
36 System.out.println("Using reader "+i+" from "+spi.getDescription(Locale.US)+" "+spi.getVendorName()+" "+spi.getVersion());
37 //while (true) {
38  reader.setInput(ImageIO.createImageInputStream(f));
39  image = reader.read(0);
40 //}
41  break;
42  }
43  }
44  }
45  if (image == null) {
46  throw new Exception("Couldn't find a reader");
47  }
48 System.out.println("Image width="+image.getWidth()+" height="+image.getHeight());
49  setSize(image.getWidth(),image.getHeight());
50  }
51  catch (IOException e) {
52  e.printStackTrace();
53  }
54  }
55 
56  public void paintComponent(Graphics g) {
57 //System.out.println("SingleImagePanel.paintComponent()");
58  Graphics2D g2d=(Graphics2D)g;
59  g2d.drawImage(image,0,0,this);
60  }
61  }
62 
63  TestImageIO(String args[]) throws Exception {
64 
65  addWindowListener(new WindowAdapter() {
66  public void windowClosing(WindowEvent e) {
67  dispose();
68  }
69  });
70 
71  Container content = getContentPane();
72  //content.setLayout(new GridLayout(1,1));
73  SingleImagePanel panel = new SingleImagePanel(args);
74  content.add(panel);
75  setSize(panel.getWidth(),panel.getHeight());
76  //pack();
77  }
78 
79  public static void main(String args[]) {
80 
81  //javax.imageio.spi.IIORegistry.getDefaultInstance().registerApplicationClasspathSpis();
82  javax.imageio.ImageIO.scanForPlugins();
83 
84  javax.imageio.ImageIO.setUseCache(false); // no slow disk caches for us !
85 
86  String[] formats=ImageIO.getReaderFormatNames();
87  for (int i=0; formats != null && i<formats.length; ++i) {
88 System.out.println(formats[i]);
89  Iterator readers = ImageIO.getImageReadersByFormatName(formats[i]);
90  while (readers.hasNext()) {
91  ImageReader reader = (ImageReader)readers.next();
92  ImageReaderSpi spi = reader.getOriginatingProvider();
93 System.out.println("\t"+spi.getDescription(Locale.US)+" "+spi.getVendorName()+" "+spi.getVersion());
94  }
95  }
96  try {
97  TestImageIO f = new TestImageIO(args);
98  f.setVisible(true);
99  }
100  catch (Exception e) {
101  e.printStackTrace();
102  System.exit(0);
103  }
104  }
105 
106 }
static void main(String args[])