Tiff загружен из потока через libtiff.net не имеет значений поля

StackOverflow https://stackoverflow.com/questions/4781948

Вопрос

Мое приложение должно обрабатывать файлы 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 или я что -то упускаю?

Это было полезно?

Решение

Команда поддержки 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);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top