JAVA分割多頁tif文件

最近因爲工做緣由,客戶發了一些tif格式的文件,使用window xp自帶的圖片查看器,只能打開第一頁面,看着十分不方便,就在網上查了些資料,找到了一個用java分割tif多頁文件的源碼,分享一下。 java

源碼以下: app


package com.wsq.tif;

import java.io.*;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.TIFFEncodeParam;
import com.sun.media.jai.codec.TIFFDecodeParam;
import com.sun.media.jai.codec.JPEGEncodeParam;
 
import java.awt.image.RenderedImage;
import javax.media.jai.RenderedOp;
import javax.media.jai.JAI;
import java.awt.image.renderable.ParameterBlock;

public class MultiPageRead {
    public static void main(String[] args) throws IOException {
        new MultiPageRead().doitJAI();
    }
 
    public void  doitJAI() throws IOException {
        FileSeekableStream ss = new FileSeekableStream("F:/test2.tif");
        TIFFDecodeParam param0 = null;
        TIFFEncodeParam param = new TIFFEncodeParam();
        JPEGEncodeParam param1 = new JPEGEncodeParam();
        ImageDecoder dec = ImageCodec.createImageDecoder("tiff", ss, param0);
        int count = dec.getNumPages();
        param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);
        param.setLittleEndian(false); // Intel
        System.out.println("This TIF has " + count + " image(s)");
        for (int i = 0; i < count; i++) {
            RenderedImage page = dec.decodeAsRenderedImage(i);
            File f = new File("f:/tif/page_" + (i+1) + ".jpg");
            System.out.println("Saving " + f.getCanonicalPath());
            ParameterBlock pb = new ParameterBlock();
            pb.addSource(page);
            pb.add(f.toString());
            pb.add("JPEG");
            pb.add(param1);
            RenderedOp r = JAI.create("filestore",pb);
            r.dispose();
        }
    }
}

此類運行依賴三個JAI包,費了很多勁才找到,共享出來 spa

jai_codec.jar,jai_core.jar,mlibwrapper_jai.jar code

源碼和lib包下載鏈接:http://pan.baidu.com/s/1eQiUFuy 圖片

相關文章
相關標籤/搜索