通过LibTiff.Net从Stream加载的Tiff没有字段值

时间:2011-01-24 12:27:41

标签: c# .net tiff memorystream libtiff.net

我的应用程序必须处理存储在MemoryStream中的TIFF文件,但LibTiff.Net始终为字段值返回null

        MemoryStream ms = new MemoryStream();
        FileStream fs = new FileStream("testfile.tif", FileMode.Open);
        fs.CopyTo(ms);

        //It seems (memory) streams have to be opened in write mode, "r" always returns <null>
        Tiff tiff = Tiff.ClientOpen("someArbitraryName", "w", ms, new TiffStream());

        FieldValue[] imageHeight = tif.GetField(TiffTag.IMAGELENGTH);

直接打开文件以便使用Tiff.Open进行阅读。

这是LibTiff.Net库中的错误还是我遗漏了什么?

1 个答案:

答案 0 :(得分:3)

Bit Miracle支持团队为我提供了解决方案:

Tiff.ClientOpen从流的当前位置读取数据。

    MemoryStream ms = new MemoryStream();
    FileStream fs = new FileStream("testfile.tif", FileMode.Open);
    fs.CopyTo(ms);

    ms.Position = 0;

    Tiff tiff = Tiff.ClientOpen("someArbitraryName", "r", ms, new TiffStream());

    FieldValue[] imageHeight = tif.GetField(TiffTag.IMAGELENGTH);

这解决了这个问题。