Tiff caricato dal flusso attraverso LibTiff.Net non ha valori di campo
-
23-10-2019 - |
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?
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