C# LIBTiff.net零扫描线大小

C# LIBTiff.net零扫描线大小,c#,libtiff.net,C#,Libtiff.net,我正在读取一个报告扫描线大小为零的特定TIF文件。读取操作返回null tiff = Tiff.ClientOpen("image", Stream.Length == 0 ? "w" : "ra", Stream, new TIFFTruncStream()); tiff==null,并且日志包含零扫描线大小的跟踪消息 NET framework和其他一些查看器无法打开该文件,我们已设法在一些旧的IBM查看器中打开这些文件。这肯定是一个损坏的文件,还是LibTiff.NET不支持的场景 谢谢

我正在读取一个报告扫描线大小为零的特定TIF文件。读取操作返回null

tiff = Tiff.ClientOpen("image", Stream.Length == 0 ? "w" : "ra", Stream, new TIFFTruncStream());
tiff==null,并且日志包含零扫描线大小的跟踪消息

NET framework和其他一些查看器无法打开该文件,我们已设法在一些旧的IBM查看器中打开这些文件。这肯定是一个损坏的文件,还是LibTiff.NET不支持的场景


谢谢

libtiff/libtiff.Net绝对不支持零扫描线大小。我不知道还有哪种查看器支持扫描线长度为零的图像

Jim给我们发送了两份这样的文件,结果证明这些文件已损坏/损坏。它们为第一页指定零宽度

我试图在其他一些图像查看器中打开这些文件,只有MacOSXMavericks中的预览工具才能打开它们。该实用程序打开两个文件,但悄悄跳过第一个断开的页面。它不显示错误,并表现为文件中少了一页

要实现相同的静默跳过第一页,可以使用以下解决方法:

在附加模式下打开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());
}

很可能是一个损坏的文件。但是:网上有没有可以打开文件的现代查看器?我没有试过。我真正需要知道的是零扫描线的含义,以及这是否是文件损坏的典型标志。libtiff/libtiff.Net绝对不支持零扫描线大小。这可能是一个损坏的文件,一些目录或页面被破坏,或者读取/计算扫描线大小的代码中可能存在错误。鉴于您能够在至少一个查看器中打开此文件,我认为该库可以进行调整以读取此类文件。欢迎您将您的文件以及任何其他屏幕截图等发送到support@bitmiracle.com供进一步审查。没有这个文件,我就无能为力了,对不起。@Babrovsky,你不想回答这个问题,回答时指出零扫描线是一个损坏的图像吗。我发送了样本图片,你们确认了它的“腐败”。当然,只是直到今天我才找到这些问题:-