我正在阅读报告零扫描线尺寸的特定TIF文件。读操作返回null。
tiff = Tiff.ClientOpen("image", Stream.Length == 0 ? "w" : "ra", Stream, new TIFFTruncStream());
tiff == null
,日志中包含Zero scanline size
跟踪消息。
.NET框架和其他一些 无法打开文件,我们已经设法在一些较旧的IBM查看器中打开文件。这绝对是一个损坏的文件,还是只有LibTiff.NET
不支持的方案?
由于
答案 0 :(得分:0)
libtiff / LibTiff.Net绝对不支持零扫描线大小。我不知道任何其他支持扫描线长度为零的图像的观众。
Jim向我们发送了几个这样的文件,结果发现文件已损坏/损坏。它们为第一页指定零宽度。
我尝试在其他一些图像查看器中打开这些文件,只有Mac OS X Mavericks中的预览实用程序可以打开它们。该实用程序会打开这两个文件,但会静静地跳过第一个打破的页面。它显示的不是错误,并且表示文件中只有少一页。
要实现相同的目标(默默跳过第一页),您可以使用以下解决方法:
以下是变通方法的示例代码。
// "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());
}