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

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

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

http://bitmiracle.com/libtiff/

谢谢

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

如果您的目标是尽可能多地支持TIFF标准,请从LibTiff(衍生物)开始。 我使用了BitMiracle(LGPL)的LibTiff.NET,这对我很有用。 请看我的其他post

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

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

它只会在框架方法无法打开它的意义上腐败。

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

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

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

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