如何在C#中检查损坏的TIFF图像?

时间:2010-04-12 11:56:58

标签: c# image tiff

我搜索了如何检查TIFF文件是否损坏。大多数建议将Image.FromFile函数包装在try块中。如果它抛出OutOfMemoryException,则其损坏。有没有人用过这个?有效吗?任何替代方案?

4 个答案:

答案 0 :(得分:4)

请查看名为LibTiff .NET的免费软件。它具有检查TIF文件中的每个页面是否已损坏的功能。即使是部分腐败也没问题

http://bitmiracle.com/libtiff/

由于

答案 1 :(得分:3)

许多tiff文件无法在标准GDI + .NET中打开。也就是说,如果你在Windows XP上运行。 Window 7好多了。因此,GDI +不支持的任何文件(即传真,16位灰度,48bpp RGB,平铺tiff,piramidical平铺tiff等)都被视为“损坏”。而且不仅如此,在32位系统上导致位图超过100 MB的位图也会导致内存不足异常。

如果您的目标是尽可能支持TIFF标准,请从LibTiff(衍生产品)开始。我使用了BitMiracle(LGPL)的LibTiff.NET,这对我很有用。请参阅我的其他posts

许多TIFF实用程序也基于LibTIFF,其中一些实用程序移植到C#.NET。如果你想验证TIFF,这将是我的建议。

至于其他回复中建议的TIFF规范:当然这可以为您提供位级控制。但根据我的经验,你不需要那么低,以获得良好的TIFF支持。这种格式非常通用,从头开始支持将耗费大量时间。

答案 2 :(得分:2)

只有框架方法无法打开它才会腐败。

框架无法打开一些TIFF类型 - (在我的情况下,我无法记住确切的一种,认为它是传真类型之一......)

如果您只是想使用框架来操作图像,那对您来说可能已经足够了。毕竟我无法打开它,你无法使用它......

ImageMagic - 可能会为您提供更多范围

答案 3 :(得分:0)

如果没有查看tiff,可能很难从视觉角度看它的损坏情况,但是如果处理图像时遇到问题,只需创建一个函数来对这种类型的处理进行基本测试并处理错误?