【问题标题】:TIFF PackBits compression with Predictor step?使用预测器步骤进行 TIFF PackBits 压缩?
【发布时间】:2013-12-03 22:37:18
【问题描述】:

有谁知道 PackBits 压缩(标签 259;值 32773)和水平差分预测器(标签 317;值 2)的组合是否 a) 根据 TIFF 规范允许? 而且,b ) 软件普遍支持?

到目前为止,我发现 TIFF 6.0 规范对 Predictor 有以下说明:

目前,此字段仅用于 LZW(压缩 = 5)编码,因为 LZW 可能是唯一可以显着受益于预测器步骤的 TIFF 编码方案。

根据this page(这似乎是网络上最好的 TIFF 资源之一):

理论上,预测步骤独立于压缩步骤,因此可以与任何压缩方案结合使用。然而,当与 LZW 或 Deflate 压缩结合使用时,它可能最有用。

我正在为 Java ImageIO 开发一个 TIFF 图像编写器插件,一些快速测试表明 PackBits 压缩也受益于预测器步骤。我的插件可以毫无问题地读/写组合,但我问的原因是预览(可能是 OS X 的 ImageIO 框架)似乎不支持此选项(显示图像,但没有应用预测器步骤)。不确定 LibTiff 等是做什么的。

PS:ZLib/Deflate 和 Predictor 的组合似乎在我测试过的所有软件中都能正常工作,所以至少它与 LZW 没有严格的关联。

【问题讨论】:

    标签: tiff


    【解决方案1】:

    在为处理略微或完全不符合规范的 TIFF 和 PDF 的代码工作了近十年之后,让我提供一点智慧:如果你甚至怀疑你正在走向一条道路这将产生会破坏解码器的文件,不要去那里。只是不要。当然,如果可以的话,让你的解码器处理它,但是除了最干净的输出之外不要写任何东西,这通常意味着保持简单(r)。 如果你要忽略这个建议,请务必填写software string,这样我才能更恰当地诽谤你的出身。

    关于 PackBits - 如您所知,PackBits 是一种无损 RLE 压缩方案,它确实不是很好。从历史的角度来看,我相信它被添加到 TIFF 规范中的唯一目的是允许 Mac 软件使用相对较少的代码生成 TIFF,尤其是考虑到 MacPaint 格式是基于 PackBits 的。由于 PackBits 不是特别好开始并且不是特别广泛使用,我不会试图将它修饰得超出它已经是:一种不是特别好的压缩方案,主要用于被认为是“遗留”的白色 1 位数据" 充其量。

    【讨论】:

    • 作为另一个在近 20 年内编写 TIFF 读者/作家的人,我同意@plinth。我的代码支持 LZW+Flate 的预测器,仅此而已。我从未见过它用于其他压缩类型。
    • @BitBank, plinth:谢谢你们两位的好建议!我将在编写 PackBits 时禁用预测器选项(但在阅读时会接受它)。也同意 PackBits 不如大多数其他压缩方案,但它是一个基线选项,所以我想支持它的完整性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 2016-12-22
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多