文档章节

JAVA分割多页tif文件

wsqzz
 wsqzz
发布于 2013/06/05 14:15
字数 251
阅读 2398
收藏 9

最近由于工作原因,客户发了一些tif格式的文件,使用window xp自带的图片查看器,只能打开第一页面,看着十分不方便,就在网上查了些资料,找到了一个用java分割tif多页文件的源码,分享一下。

源码如下:


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包,费了不少劲才找到,共享出来

jai_codec.jar,jai_core.jar,mlibwrapper_jai.jar

源码和lib包下载连接:http://pan.baidu.com/s/1eQiUFuy

© 著作权归作者所有

共有 人打赏支持
wsqzz
粉丝 6
博文 6
码字总数 3132
作品 0
郑州
部门经理
私信 提问
加载中

评论(3)

dongjssdsdu
dongjssdsdu
博主,你好!
我在执行 RenderedImage page = dec.decodeAsRenderedImage(i);报错
Exception in thread "main" java.lang.RuntimeException: Unsupported combination of photometric interpretation, samples per pixel, and bit depth.
博主遇到过吗?
wsqzz
wsqzz

引用来自“dunhanson”的评论

博主你好!JAI有没有区间拆分多页tif的功能?因为我的需求不是拆分所有图片,比如说:一个500页的多页TIF我需要把其的1-3页拆分成一份,4-15拆分成一份...

没有尝试过你的需求,算法上考率单页分离后,按序号多图合并
dunhanson
dunhanson
博主你好!JAI有没有区间拆分多页tif的功能?因为我的需求不是拆分所有图片,比如说:一个500页的多页TIF我需要把其的1-3页拆分成一份,4-15拆分成一份...
深入学习Tesseract-ocr识别中文并训练字库的方法

  上篇文章简单的学习了tesseract-ocr识别图片中的英文(链接地址如下:https://www.cnblogs.com/wj-1314/p/9428909.html),看起来效果还不错,所以这篇文章继续深入学习tesseract-ocr识别...

战争热诚
08/14
0
0
java做一个能够合并多个tif文件成一个tiff文件的程序

需要用java做一个能够合并多个tif文件成一个tiff文件的程序,合并能实现,但是原tif图片是压缩好的,合并完成后被恢复成未压缩状态了,即文件非常庞大。用现成的工具合并好后,文件大小是原来...

disj
2015/02/28
1K
0
【PPT分享】Java_Program_in_Action

淘宝年轻的工程师撒迦 @RednaxelaFX ,09年毕业,已向JVM(Java虚拟机)提交patch 4个。他不仅踊跃参与开源,也在 @淘宝技术大学 传道授业解惑。 请看他写的一个深入浅出介绍JVM实现的300多页...

红薯
2011/09/22
1K
8
jtessboxeditor合并tif出错啦求大神

我在合并多张tif时 选择文件时没错, 之后合并生成文件时输入要保存的文件名 后点击保存报如下错误 什么原因啊,我在win7上使用的,也装了java运行环境 求大神帮忙,小弟不胜感激!...

hphper
2014/07/29
572
3
LogicalDOC 6.6 发布,文档管理系统

LogicalDOC 6.6 新增一个可定制的用户面板,提升了删除大量文件夹的性能,提升了多页文档的预览等。 LogicalDOC是一个采用Java开发的基于网页的文档管理系统,易于使用和学习。它利用最佳的J...

oschina
2012/11/30
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Yearning基于Inception的开源SQL审核平台

基础环境: python3 nodejs vuejs mysql python-ldap pymysql mysql 新建数据库 create database Yearning DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; Navicat导入初始化数据 : ......

以谁为师
12分钟前
0
0
flutter Expanded用法

使用的地方:一个分类,类似京东的,左右两边都可以滑动 Widget build(BuildContext context) { return Row(children: [ Column( children: <Widget>[ Ex......

大灰狼wow
17分钟前
2
0
Java8 Map中新增的方法使用总结

前言 得益于 Java 8 的 default 方法特性,Java 8 对 Map 增加了不少实用的默认方法,像 getOrDefault, forEach, replace, replaceAll, putIfAbsent, remove(key, value), computeIfPresent,......

kaixin_code
26分钟前
1
0
@TransactionConfiguration

@TransactionConfiguration过时与替代写法 @TransactionConfiguration 替代写法

miaojiangmin
28分钟前
0
0
浅谈Vue响应式(数组变异方法)

很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法。 看来想让女...

开元中国2015
30分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部