TIFF, der über libtiff.net aus dem Stream geladen wurde, hat keine Feldwerte
-
23-10-2019 - |
Frage
Meine Anwendung muss TIFF -Dateien verarbeiten, die in einem Speicherbereich gespeichert sind, aber libtiff.net kehrt immer zurück null
Für die Feldwerte.
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);
Öffnen Sie die Datei direkt zum Lesen mit Verwendung Tiff.Open
funktioniert gut.
Ist dies ein Fehler in der Bibliothek libtiff.net oder fehlt mir etwas?
Lösung
Das Bit Miracle Support -Team gab mir die Lösung:
Tiff.ClientOpen
liest Daten aus der aktuellen Position des Streams.
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);
Dies behebt das Problem.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow