TIFF, загруженный из Stream через LibTiff.Net, не имеет значений полей - PullRequest
1 голос
/ 24 января 2011

Мое приложение должно обрабатывать файлы TIFF, которые хранятся в MemoryStream, но 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 Ответ

3 голосов
/ 24 января 2011

Служба поддержки 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);

Это решает проблему.

...