2

我已经在一个程序上工作了几天,我试图将多页 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();
    }

其中 ArrayList 图像列表是通过使用以下方法解码源多页 tiff 图像在别处获得的:

ImageCodec.createImageDecoder("tiff", tiffStream, null) 

我也尝试过使用 ImageIO 库的其他方法,但我似乎无法思考如何正确解决这个问题。运行我上面列出的“pushTiff”方法似乎总是会导致异常,例如:

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

好像之前获得的三个页面是空的什么的,但是当我在运行时检查它们是否存在时,它们就在那里。

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

有任何想法吗?

4

0 回答 0