Java将多个JPG文件合并为单个多页TIFF文件

时间:2013-10-18 01:17:24

标签: java tiff javax.imageio

我已经在一个程序上工作了几天,我试图将多页tiff图像分成单个jpeg文件,然后将多个jpeg重新合并为一个多页tiff文件给我。我尝试了很多方法,主要包括使用JAI,ImageIO和自定义JAI / ImageIO库,但我似乎无法将3个单个jpeg文件合并到一个TIFF文件中。例如,我有以下代码部分:

private void pushTIFF(ArrayList<PlanarImage> images) throws IOException{
        Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff");
        ImageWriter imageWriter = writers.next();

        ImageOutputStream pushOS = ImageIO.createImageOutputStream(new File(pathToTIFF));
        imageWriter.setOutput(pushOS);

        imageWriter.prepareWriteSequence(null);
        for(int i = 0; i < images.size(); i ++){
            imageWriter.writeToSequence(new IIOImage(images.get(i),null,null),null);
        }
        imageWriter.endWriteSequence();
        imageWriter.dispose();
        pushOS.flush();
        pushOS.close();
    }

通过使用:

解码源多页tiff图像,在其他地方获得ArrayList图像列表
ImageCodec.createImageDecoder("tiff", tiffStream, null) 

我也尝试过使用ImageIO库的其他方法,但我似乎无法围绕如何正确处理这个问题。运行上面列出的方法“pushTiff”似乎总是导致例外:

com.sun.media.jai.codecimpl.util.ImagingException: Unable to decode Packbits compressed data - not enough data.

好像之前获得的三个页面是null或者其他东西,但当我在运行时检查它们是否存在时,它们就在那里。

基本上,我问的是否有人知道在java中操作tiff文件的更新方法。最后,我希望能够将较大的tiff图像分解为较小的jpeg页面,然后将其重新合并为一个tiff图像,该图像的整体文件大小比它开始时要小。

有什么想法吗?

0 个答案:

没有答案