Question

Mon application doit gérer les fichiers TIFF qui sont stockés dans un MemoryStream, mais LibTiff.Net retourne toujours null pour les valeurs de champ.

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

Ouverture du fichier directement pour la lecture à l'aide Tiff.Open fonctionne très bien.

Est-ce un bogue dans la bibliothèque LibTiff.Net ou suis-je manque quelque chose?

Était-ce utile?

La solution

Bit équipe de soutien Miracle m'a fourni la solution:

Tiff.ClientOpen lit les données de la position actuelle du flux.

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

résout le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top