rebuilding head
[mir.git] / source / tool / ImageTool.java
diff --git a/source/tool/ImageTool.java b/source/tool/ImageTool.java
new file mode 100755 (executable)
index 0000000..ff68b2c
--- /dev/null
@@ -0,0 +1,119 @@
+package tool;
+
+import java.awt.Transparency;
+import java.awt.image.ColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import javax.media.jai.JAI;
+import javax.media.jai.PlanarImage;
+
+
+/**
+ * This class displays basic information about the image.
+ */
+public class ImageTool {
+  /**
+   * The application entry point.
+   * @param args the command line arguments.
+   */
+  public static void main(String[] args) throws FileNotFoundException {
+    // We need one argument: the image filename.
+    if (args.length != 1) {
+      System.err.println("Usage: java tool.ImageTool image");
+      System.exit(0);
+    }
+    FileInputStream fi = new FileInputStream(args[0]);
+    // Open the image (using the name passed as a command line parameter)
+    PlanarImage pi = JAI.create("ImageRead", fi);
+
+    // Display image data. First, the image size (non-JAI related).
+    File image = new File(args[0]);
+    System.out.println("Image file size:" + image.length() + " bytes.");
+
+    // Now let's display the image dimensions and coordinates.
+    System.out.print("Dimensions: ");
+    System.out.print(pi.getWidth() + "x" + pi.getHeight() + " pixels");
+    System.out.println(" (from " + pi.getMinX() + "," + pi.getMinY() + " to " +
+                       pi.getMaxX() + "," + pi.getMaxY() + ")");
+
+    // Tiles number, dimensions and coordinates.
+    System.out.print("Tiles:");
+    System.out.print(pi.getTileWidth() + "x" + pi.getTileHeight() + " pixels" +
+                     " (" + pi.getNumXTiles() + "x" + pi.getNumYTiles() +
+                     " tiles)");
+    System.out.print(" (from " + pi.getMinTileX() + "," + pi.getMinTileY() +
+                     " to " + pi.getMaxTileX() + "," + pi.getMaxTileY() + ")");
+    System.out.println(" offset: " + pi.getTileGridXOffset() + "," +
+                       pi.getTileGridXOffset());
+
+    // Display info about the SampleModel of the image.
+    SampleModel sm = pi.getSampleModel();
+    System.out.println("Number of bands: " + sm.getNumBands());
+    System.out.print("Data type: ");
+
+    switch (sm.getDataType()) {
+    case DataBuffer.TYPE_BYTE:
+      System.out.println("byte");
+
+      break;
+
+    case DataBuffer.TYPE_SHORT:
+      System.out.println("short");
+
+      break;
+
+    case DataBuffer.TYPE_USHORT:
+      System.out.println("unsigned short");
+
+      break;
+
+    case DataBuffer.TYPE_INT:
+      System.out.println("int");
+
+      break;
+
+    case DataBuffer.TYPE_FLOAT:
+      System.out.println("float");
+
+      break;
+
+    case DataBuffer.TYPE_DOUBLE:
+      System.out.println("double");
+
+      break;
+
+    case DataBuffer.TYPE_UNDEFINED:
+      System.out.println("undefined");
+
+      break;
+    }
+
+    // Display info about the ColorModel of the image.
+    ColorModel cm = pi.getColorModel();
+    System.out.println("Number of color components: " + cm.getNumComponents());
+    System.out.println("Bits per pixel: " + cm.getPixelSize());
+    System.out.print("Transparency: ");
+
+    switch (cm.getTransparency()) {
+    case Transparency.OPAQUE:
+      System.out.println("opaque");
+
+      break;
+
+    case Transparency.BITMASK:
+      System.out.println("bitmask");
+
+      break;
+
+    case Transparency.TRANSLUCENT:
+      System.out.println("translucent");
+
+      break;
+    }
+  }
+}