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

5

我搜索了如何检查TIFF文件是否损坏的方法。大多数建议将Image.FromFile函数放在try块中。如果它抛出OutOfMemoryException异常,则说明它是损坏的。有没有人使用过这种方法?它有效吗?还有其他替代方法吗?

4个回答

4
请查看名为LibTiff .NET的免费软件。它具有检查TIF文件中每个页面是否损坏的功能,即使部分损坏也没有问题。 http://bitmiracle.com/libtiff/ 谢谢。

3
LibTiff是一个功能广泛的库,可以用于多种不同的目的。您能指出一个特定的参考文献来检测损坏的TIFF文件或一些示例代码吗?那将非常有帮助。 - Akshay Raut

3
许多tiff文件在标准的GDI+.NET中无法打开。也就是说,如果您正在运行Windows XP,则会更加困难。 Windows 7则要好得多。因此,任何不受GDI+支持的文件(即传真、16位灰度、48bpp RGB、平铺tiff、金字塔形平铺tiff等)都被视为“损坏”。并且不仅如此,在32位系统上生成超过几百兆字节的位图也会导致内存溢出异常。
如果您的目标是尽可能支持TIFF标准,请从LibTiff(衍生版本)开始。我使用了BitMiracle的LibTiff.NET(LGPL),对我来说效果很好。请参见我的其他posts 许多TIFF实用程序也基于LibTIFF,其中一些已经移植到C#.NET。如果您想验证TIFF,则这将是我的建议。
关于其他回复中建议的TIFF规范:当然,这可以让您进行位级控制。但根据我的经验,您不需要降到那么低的层次来获得良好的TIFF支持。该格式非常灵活,从头开始编写支持将花费您大量时间。

2

就是说,框架的方法无法打开它,所以它变得损坏了。

有一些TIFF类型的文件是框架无法打开的 - (在我的情况下,我记不清确切的类型了,可能是其中一种FAX类型...)

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

ImageMagic - 可能会为您提供更多的功能


0

不查看tiff文件,从视觉角度可能很难看出它是否损坏,但如果您在处理图像时遇到问题,只需创建一个函数来进行基本测试以检测此类处理并处理错误即可。


假设您不想验证实际文件内容是否符合其严格规范... - Mark Redman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接