用JAI实现对TIF(TIFF)格式图片的合并
import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
import javax.media.jai.JAI;
 import javax.media.jai.RenderedOp;
import com.sun.media.jai.codec.ImageCodec;
 import com.sun.media.jai.codec.ImageEncoder;
 import com.sun.media.jai.codec.TIFFEncodeParam;
public class MergeTif
 {
    public static void main(String[] args) throws IOException
    {
       try
       {
          File[] files = new File[2];
      //需要进行合并的tif图片.(均为单页)
          files[0] = new File("d:\\aa.tif");  
          files[1] = new File("d:\\bb.tif");  
          ArrayList pages = new ArrayList(files.length - 1);
          RenderedOp firstPage =
             JAI.create("fileload", files[0].getCanonicalPath());
          for (int i = 1; i < files.length; i++)
          {
             RenderedOp page =
                JAI.create("fileload", files[i].getCanonicalPath());
             pages.add(page);
          }
          TIFFEncodeParam param = new TIFFEncodeParam();
      //合并后生成的图片
          OutputStream out = new FileOutputStream("d:\\cc.tif");
          ImageEncoder encoder =
             ImageCodec.createImageEncoder("TIFF", out, param);
          param.setExtraImages(pages.iterator());
          encoder.encode(firstPage);
          firstPage.dispose();
          for (int i = 0; i < pages.size(); i++)
          {
             ((RenderedOp)pages.get(i)).dispose();
          }
          out.close();
       }
       catch (Exception e)
       {
          System.out.println(e.toString());
       }
    }
 }
 方法二:
import java.awt.p_w_picpath.renderable.ParameterBlock;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
import javax.media.jai.JAI;
 import javax.media.jai.PlanarImage;
import com.sun.media.jai.codec.FileSeekableStream;
 import com.sun.media.jai.codec.ImageCodec;
 import com.sun.media.jai.codec.ImageEncoder;
 import com.sun.media.jai.codec.TIFFEncodeParam;
public class MergeTif
 {
    public static void main(String[] args) throws IOException
    {  
  File[] files = new File[2];
  //需要进行合并的tif图片.(均为单页)
  files[0] = new File("d:\\aa.tif");
  files[1] = new File("d:\\bb.tif");
 ArrayList pages = new ArrayList(files.length - 1);
  FileSeekableStream []stream ={ new FileSeekableStream(files[0].getCanonicalPath()),
       new FileSeekableStream(files[1].getCanonicalPath())};
  ParameterBlock pb = (new ParameterBlock());
  PlanarImage firstPage=JAI.create("stream", stream[0]);
 for (int i = 1; i < files.length; i++)
  {
   PlanarImage page=JAI.create("stream", stream[i]);
   pages.add(page);
  }
  TIFFEncodeParam param = new TIFFEncodeParam();
  //合并后生成的图片
  OutputStream os = new FileOutputStream("d:\\cc.tif");
 ImageEncoder enc = ImageCodec.createImageEncoder("tiff", os, param);
  param.setExtraImages(pages.iterator());
   
  enc.encode(firstPage);
  for(int i=0; i<files.length;i++)
  { 
   stream[i].close();
  }
  os.close();
    }
 }
转载于:https://blog.51cto.com/liangjp/415330