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?

¿Fue útil?

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
scroll top