最近因爲工做緣由,客戶發了一些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 圖片