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?

War es hilfreich?

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