/* @(#) Multipagetiff.java 1.0 2001/10/4
 * Copyright (c) 2001 Larry Rodrigues
 */

import java.io.*;
import java.util.*;
import java.awt.image.*;
import java.awt.image.RenderedImage;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import com.sun.media.jai.codec.*;

public class Multipagetiff {

   public static PlanarImage readAsPlanarImage(String filename) {
      return JAI.create("fileload", filename);
   }

   public static void saveAsTIFF(RenderedImage image, String file )
       throws java.io.IOException{
      String filename = file;
      if(!filename.endsWith(".tiff"))filename = new String(file+".tiff");
      OutputStream out = new FileOutputStream(filename);
      TIFFEncodeParam param = new TIFFEncodeParam();
      ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF", out, param);
      encoder.encode(image);
      out.close();
   }

   public static void saveAsMultipageTIFF(RenderedImage[] image, String file )
       throws java.io.IOException{
      String filename = file;
      if(!filename.endsWith(".tiff"))filename = new String(file+".tiff");
      OutputStream out = new FileOutputStream(filename);
      TIFFEncodeParam param = new TIFFEncodeParam();
      ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF", out, param);
      Vector vector = new Vector();
      for(int i=1;i<image.length;i++) {
          vector.add(image[i]);
      }
      param.setExtraImages(vector.iterator());
      encoder.encode(image[0]);
      out.close();
   }

   public void createMultipageTiff(String[] filenames){
      RenderedImage image[] = new PlanarImage[filenames.length];
      for(int i=0;i<filenames.length;i++) {
          image[i] = readAsPlanarImage(filenames[i]);
      }
      try {
         saveAsMultipageTIFF(image, "multipagetiff");
      }
      catch (Exception e) {e.printStackTrace();}
   }

   public static void  main(String[] args){
      Multipagetiff mtiff = new Multipagetiff();
      if(args.length <1) {
         System.out.println("Enter a image file names");
         System.exit(0);
      }
      mtiff.createMultipageTiff(args);
   }
}
