ReadTIFF.java :  » Image » matsu-project » org » occ » Image » Java Open Source

Java Open Source » Image » matsu project 
matsu project » org » occ » Image » ReadTIFF.java
package org.occ.Image;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
//import javax.imageio.metadata.IIOMetadata;
import javax.imageio.stream.ImageInputStream;

import org.libtiff.jai.codec.XTIFFField;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;

import com.bbn.openmap.dataAccess.image.geotiff.GeoTIFFFile;
//import com.sun.media.jai.codec.FileSeekableStream;

import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageDecoder;
//import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.TIFFDecodeParam;
//import com.sun.media.jai.codec.*;

@Deprecated
public class ReadTIFF {

  public static void main(String[] args) throws IOException{
    String filename;
    if(args.length > 0){
      filename = args[0];
    } else {
      filename = "/devel/data/GeoTIFF/USGS/o41078a1.tif";
    }  
    
    String[] formatNames = ImageIO.getReaderFormatNames();
    System.out.println("Image formats that can be read: ");
    for(int x = 0; x < formatNames.length; x++){
      System.out.println("\t" + formatNames[x]);
    }
    
    GeoTIFFFile gtf = new GeoTIFFFile(filename);
    BufferedImage gtfbi = gtf.getBufferedImage();
    System.out.println("GeoTIFF image: " + gtfbi.getWidth() + " x " + gtfbi.getHeight());
    
    XTIFFField[] keys = gtf.getGeoKeys();
    gtf.dumpTags(keys);
        for(int x = 0; x < keys.length; x++){
      
      String[] ks = keys[x].getAsStrings();
      for(int y = 0; y < ks.length; y++){
        System.out.println(ks[y]);
      }
    }
    
    
    File file = new File(filename);
//        SeekableStream s = new FileSeekableStream(file);
//
//        TIFFDecodeParam param = null;
//
//        ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param);

    ImageInputStream iis = ImageIO.createImageInputStream(file);

    
    ImageReader ir = null;
    Iterator<ImageReader> itList = ImageIO.getImageReaders(iis);
    while(itList.hasNext()){
      ImageReader irTmp = itList.next();
      System.out.println(irTmp.getFormatName());
      
    }
    
        Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("tif");

        while(it.hasNext()){
          
          ir = it.next();
          System.out.println(ir.getFormatName());
          
        }
        if(ir == null){
          System.out.println("Problem getting image reader for tiff.");
          return;
        }
        
        
        ir.setInput(iis, true);
//    IIOMetadata metadata = ir.getImageMetadata(0);
    
//    String[] names = metadata.getMetadataFormatNames();
//        int length = names.length;
//        for (int i = 0; i < length; i++) {
//            System.out.println( "Format name: " + names[ i ] );
//            displayMetadata(metadata.getAsTree(names[i]));
//        }
        
        TIFFDecodeParam param = null;
        ImageDecoder dec = ImageCodec.createImageDecoder("tiff", file, param);
        int pageCount = dec.getNumPages();
        System.out.println("Number of pages: " + pageCount);
        for(int x = 0; x < pageCount; x++){
          BufferedImage bi = ir.read(x);
          System.out.println(x + ": " + bi.getWidth() + " x " + bi.getHeight());
          ImageIO.write(bi, "png", new File("/devel/j-" + x + ".png"));
          
        }
        
    
  } // end main
  
  static void displayMetadata(Node root) {
        displayMetadata(root, 0);
    }

    static void indent(int level) {
        for (int i = 0; i < level; i++)
            System.out.print("    ");
    }

  static void displayMetadata(Node node, int level) {
        // print open tag of element
        indent(level);
        System.out.print("<" + node.getNodeName());
        NamedNodeMap map = node.getAttributes();
        if (map != null) {

            // print attribute values
            int length = map.getLength();
            for (int i = 0; i < length; i++) {
                Node attr = map.item(i);
                System.out.print(" " + attr.getNodeName() +
                                 "=\"" + attr.getNodeValue() + "\"");
            }
        }

        Node child = node.getFirstChild();
        if (child == null) {
            // no children, so close element and return
            System.out.println("/>");
            return;
        }

        // children, so close current tag
        System.out.println(">");
        while (child != null) {
            // print children recursively
            displayMetadata(child, level + 1);
            child = child.getNextSibling();
        }

        // print close tag of element
        indent(level);
        System.out.println("</" + node.getNodeName() + ">");
    }

} // end ReadTIFF
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.