首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将多个tif和Jpeg组合成单个tif文件大

将多个tif和Jpeg组合成单个tif文件大
EN

Stack Overflow用户
提问于 2020-09-13 23:55:42
回答 1查看 359关注 0票数 0

我正在尝试将多个tif和jpeg文件合并为单个tif文件。

当多个tif文件单独合并为一个tif文件时,该文件的大小几乎与原始多个tif文件的大小相同(10MB的多个tif文件->10MB的单个tif文件)。这太完美了。

然而,当单独将具有许多Jpeg文件tif文件组合成单个tif文件时,与原始文件相比(10MB的多个tif和Jpeg文件导致创建200MB的tif文件),文件大小很大。

有没有办法防止当JPEG文件到来时文件太大?

使用的代码:

代码语言:javascript
代码运行次数:0
运行
复制
List<BufferedImage> bufferedImageList = new ArrayList<>();
for (String page : pages) {
BufferedImage bufferedImage = ImageIO.read(file);
    bufferedImageList.add(bufferedImage);
}

String filename = "D:\home\example.tif";
ImageWriter writer = ImageIO.getImageWritersByFormatName("TIF").next();

try (ImageOutputStream output = ImageIO.createImageOutputStream(new File(filename))) {
    writer.setOutput(output);

    ImageWriteParam params = writer.getDefaultWriteParam();
    params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);

    params.setCompressionType("LZW");
    params.setCompressionQuality(1.0f);

    writer.prepareWriteSequence(null);

    for (BufferedImage image : bufferedImageList) {
        writer.writeToSequence(new IIOImage(image, null, null), params);
    }
    
    
    writer.endWriteSequence();
    
}

writer.dispose();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 21:14:10

正如@Henry在评论中所写的那样,使用LZW (或任何其他无损)压缩不会实现与有损JPEG (对于“自然”图像)相同的压缩效果。在大多数情况下,这样做会产生更大的文件,但质量最高。在许多情况下,这是可以接受的。

另一种方法是通过指定compressionType "JPEG",在TIFF文件中也使用JPEG压缩。您可能还需要将compressionQuality设置为较低的值(我相信0.7f是ImageIO中JPEG的默认设置),以获得更合理的文件大小。

然而,使用JPEG压缩来重新压缩已经被JPEG压缩的图像,将引入"generational loss",因为JPEG通常不能被完美地重建。通过使用与原始表相同的表重新压缩,在技术上可以将这种质量损失保持在最低限度,但这在实践中很难实现,因为编码器/解码器(即,最好的办法是使用与编写原始代码相同的编码器,使用完全相同的参数)。

第三种选择是使用/创建一个特殊用途的TIFF实用程序,它可以在新的TIFF容器中按原样存储JPEG流。这些文件可能不是超高效的TIFF,因为它们不支持条带/平铺等,并且一些非标准输入可能仍然需要重写才能产生有效的TIFF。这将是一项更多的工作,并需要一些关于TIFF格式的深入知识,但肯定是可行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63872701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档