Tiff загружен из потока через libtiff.net не имеет значений поля
-
23-10-2019 - |
Вопрос
Мое приложение должно обрабатывать файлы 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);
Это решает проблему.
Не связан с StackOverflow