Domanda

La mia domanda ha a che i file TIFF maniglia che vengono memorizzati in un MemoryStream, ma LibTiff.Net restituisce sempre null per i valori di 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);

L'apertura del file direttamente per la lettura utilizzando Tiff.Open funziona bene.

Si tratta di un bug nella libreria LibTiff.Net o mi sto perdendo qualcosa?

È stato utile?

Soluzione

Bit Miracle team di supporto mi ha fornito la soluzione:

Tiff.ClientOpen legge i dati dalla posizione corrente del flusso.

    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);

questo risolve il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top