TIFF cargado desde la transmisión a través de libtiff.net no tiene valores de campo
-
23-10-2019 - |
Pregunta
Mi aplicación tiene que manejar los archivos TIFF que se almacenan en un MemoryStream, pero Libtiff.net siempre devuelve null
para los valores de campo.
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);
Abrir el archivo directamente para leer usando Tiff.Open
funciona bien.
¿Es este un error en la biblioteca de Libtiff.net o me falta algo?
Solución
Bit Miracle Support Team me proporcionó la solución:
Tiff.ClientOpen
Lee datos de la posición actual de la transmisión.
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);
Esto soluciona el problema.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow