2011-01-24 1 views
1

Mon application doit gérer les fichiers TIFF qui sont stockés dans un MemoryStream, mais LibTiff.Net renvoie toujours null pour les valeurs de champ.Tiff chargé de Stream via LibTiff.Net n'a pas de 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 bug dans la librairie LibTiff.Net ou est-ce que je manque quelque chose?

Répondre

3

Bit équipe de soutien de 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); 

Cela résout le problème.

Questions connexes