libtiff/LibTiff.Net 绝对不支持零扫描线大小。我不知道任何其他支持扫描线长度为零的图像的查看器。
Jim 向我们发送了几个这样的文件,结果发现这些文件已损坏/损坏。他们为第一页指定零宽度。
我试图在其他一些图像查看器中打开这些文件,并且只有 Mac OS X Mavericks 中的预览实用程序可以打开它们。该实用程序会打开这两个文件,但会默默地跳过第一个损坏的页面。它不显示错误,就像文件中少了一页一样。
为了达到同样的效果(静默跳过第一页),您可以使用以下解决方法:
- 以附加模式打开 TIFF
- 将当前页面设置为第一页
- 在循环中检查每个页面的大小
- 跳过宽度或高度为零的任何页面
下面是解决方法的示例代码。
// "a" is for append
using (Tiff inImage = Tiff.Open(put-file-name-here, "a"))
{
if (inImage == null)
return;
// move to the first page
inImage.SetDirectory(0);
do
{
FieldValue[] width = inImage.GetField(TiffTag.IMAGEWIDTH);
FieldValue[] height = inImage.GetField(TiffTag.IMAGEWIDTH);
if (width[0].ToInt() != 0 && height[0].ToInt() != 0)
{
// the page appears correct, do something with it
}
} while (inImage.ReadDirectory());
}