【问题标题】:Tiff AnalyzerTiff 分析器
【发布时间】:2009-07-09 13:39:14
【问题描述】:

我正在编写一个程序来转换一些数据,主要是一堆 Tiff 图像。一些 Tiffs 似乎对它们有一个小问题。它们在某些查看器(Irfanview,客户的旧系统)中显示良好,但在其他查看器(客户的新系统,Window 的图片和传真查看器)中显示不佳。我手动查看了二进制数据,所有标签看起来都不错。谁能推荐一个可以分析它并告诉我它有什么问题(如果有的话)的应用程序吗?

另外,为了清楚起见,我只是转换单独存储在数据库中的图像数据并复制图像,我自己没有编辑图像,所以我很确定我不是把他们搞砸了。

UDPATE: 对于任何感兴趣的人,以下是来自好文件和坏文件的标签:

糟糕
标签类型长度值
256 图像宽度 SHORT 1 1652
257 图像长度短 1 704
每个样本 258 位 SHORT 1 1
259 压缩 SHORT 1 4
262 光度 SHORT 1 0
266 填写订单 SHORT 1 1
273 带偏移 LONG 1 210 (d2 Hex)
274 方向 SHORT 1 3
每像素 277 个样本 SHORT 1 1
每条带 278 行 SHORT 1 450
279 条带字节计数 LONG 1 7264(1c60 十六进制)
282 X 分辨率 RATIONAL 1 200 / 1 = 200.000
283 Y 分辨率 RATIONAL 1 200 / 1 = 200.000
284 平面配置 SHORT 1 1
296 分辨率单位 SHORT 1 2

不错
标签类型长度值
254 新子文件类型 LONG 1 0 (0 Hex)
256 图像宽度 SHORT 1 1193
257 图像长度短 1 788
每个样本 258 位 SHORT 1 1
259 压缩 SHORT 1 4
262 光度 SHORT 1 0
266 填写订单 SHORT 1 1
270 图像描述 ASCII 45 256
273 带偏移 LONG 1 1118 (45e Hex)
274 方向 SHORT 1 1
每像素 277 个样本 SHORT 1 1
每条带 278 行 LONG 1 788(314 十六进制)
279 条带字节计数 LONG 1 496(1f0 十六进制)
280 最小样本值 SHORT 1 0
281 最大样本值 SHORT 1 1
282 X 分辨率 RATIONAL 1 200 / 1 = 200.000
283 Y 分辨率 RATIONAL 1 200 / 1 = 200.000
284 平面配置 SHORT 1 1
293 组 4 选项 LONG 1 0 (0 Hex)
296 分辨率单位 SHORT 1 2

【问题讨论】:

    标签: analysis tiff


    【解决方案1】:

    通常这是因为 tiff 使用的是 6.0 标准中的 JPEG 编码,不久之后该标准就被放弃了。查看标签 259。如果是 6,那就是问题所在。 JPEG 应使用“较新”方案进行编码,7. 标准库不会读取旧方案,包括 Windows 附带的方案。

    您可以使用 libtiff(或任何使用 libtiff 的库或程序,它们中的大多数都这样做)来读取这些,但在 libtiff 中默认禁用方案 6 (OJPEG)。您必须修补并重新编译 libtiff 才能启用它。 Here's a link with instructions.

    【讨论】:

    • 标签 259 为 4(添加单词以满足最小评论长度要求...叹息)
    • 有问题的图片的宽度能被8整除吗? Group 4 压缩应该支持它,但不是每个人都支持...
    • 这很奇怪。对于坏图像,原点是右下角,但通常会被忽略。此外,好的图像在一个条带中,但坏的图像在两个条带中。坏图像中是否有第二个 273 标签?
    • 不,没有第二个 273 标签
    • 好吧,如果图像长度是 704,并且每条带的行数是 450,那么应该有第二条条,第二条 273 给它一个偏移量,对吧?当 IrfanView(喜欢那个程序)显示它时,它显示了多少行?
    【解决方案2】:

    LibTIFF 可能会有所帮助。查看 Tiff 的问题通常是由使用的压缩引起的。我会调查一下。

    【讨论】:

      【解决方案3】:

      bad image 中的 RowsPerStrip 为 450,小于 704,即图像长度(高度)。这意味着图像必须有两个条带。因此,StripOffsets 和 StripByteCounts 的计数都必须为 2。这些指示条带数据所在的文件偏移量。当这些偏移丢失时,只有第一个片段是可解码的。

      【讨论】:

        【解决方案4】:

        值得一试 ImageMagick。我的理解是 TIFF 是一种相当复杂的文件格式,并不是每个人都能完全实现该格式。

        【讨论】:

          【解决方案5】:

          TIFF 是一种非常复杂的格式 - 不仅在于它可以编码的数据的丰富性(各种像素格式,各种编码器) - 而且还因为文件格式本身的丰富性(它可以容纳任何东西的通用结构)。对于我们在成像中的每一个想法,它基本上都是垃圾场。 :-)

          我强烈推荐 .NET 3.0 的 WPF Imaging 库。它的 Tiff 解码器虽然不支持所有像素格式,但非常强大,并且具有用于访问所有元数据的简单界面。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-07
            • 1970-01-01
            • 2014-10-07
            相关资源
            最近更新 更多