Tiff分析仪

时间:2009-07-09 13:39:15

标签: analysis tiff

我正在编写一个程序来转换一些数据,主要是一堆Tiff图像。一些Tiff似乎对他们有一个小问题。它们在一些观众(Irfanview,客户的旧系统)中表现得很好,但在其他观众中却没有(客户的新系统,Window的图片和传真查看器)。我手动查看了二进制数据,所有标签看起来都没问题。任何人都可以推荐一款可以分析它的应用程序并告诉我它有什么问题吗?

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

UDPATE: 对于任何感兴趣的人,这里是好文件和坏文件的标签:

BAD
标签类型长度值
256图像宽度短1 1652
257图像长度SHORT 1 704
每个样本258个比特短1 1 259压缩短1 4
262光度学简称1 0
266填写订单简称1 1 273剥离偏移LONG 1 210(d2十六进制)
274 Orientation SHORT 1 3
每像素277个样本SHORT 1 1
每条带278行SHORT 1 450
279 Strip Byte Counts LONG 1 7264(1c60 Hex)
282 X分辨率RATIONAL 1< 194> 200/1 = 200.000
283 Y分辨率RATIONAL 1< 202> 200/1 = 200.000
284平面配置简短1 1
296决议单位简称1 2


标签类型长度值
254新子文件类型LONG 1 0(0 Hex)
256图像宽度短1 1193
257图像长度短1 788
每个样本258个比特短1 1 259压缩短1 4
262光度学简称1 0
266填写订单简称1 1 270图像说明ASCII 45 256
273剥离偏移长1 1118(45e十六进制)
274方向短1 1 每像素277个样本SHORT 1 1
每条带278行LONG 1 788(314 Hex)
279 Strip Byte Counts LONG 1 496(1f0 Hex)
280 Min Sample Value SHORT 1 0
281最大样本值SHORT 1 1
282 X分辨率RATIONAL 1< 301> 200/1 = 200.000
283 Y分辨率RATIONAL 1< 309> 200/1 = 200.000
284平面配置简短1 1
293第4组选项LONG 1 0(0 Hex)
296决议单位简称1 2

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

坏图像中的RowsPerStrip是450,小于704,图像长度(高度)。这意味着图像必须有两个条带。因此,StripOffsets和StripByteCounts必须都有两个。这些表示条带数据所在的文件偏移量。当缺少这些偏移时,只有第一个条带可以解码。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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