我搜索了如何检查TIFF文件是否损坏。大多数建议将Image.FromFile函数包装在try块中。如果它抛出OutOfMemoryException,则其损坏。有没有人用过这个?有效吗?任何替代方案?
答案 0 :(得分:4)
答案 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,可能很难从视觉角度看它的损坏情况,但是如果处理图像时遇到问题,只需创建一个函数来对这种类型的处理进行基本测试并处理错误?