2014-04-21 1 views
1

Je souhaite simplement mettre à jour le champ EXIF_USERCOMMENT sur une image tif que je crée. L'appel de SetField échoue. Je ne sais pas ce que je fais mal.LibTiff.net Impossible de mettre à jour le champ EXIF_USERCOMMENT

Voici mon code trop simpliste.

Toute aide serait appréciée.

{ 
    Tiff tiffdoc = Tiff.Open("C:\\temp\\~tempCapture.tif","rw"); 

    bool bSetField = tiffdoc.SetField(TiffTag.EXIF_USERCOMMENT, "test comment field"); 

    tiffdoc.WriteDirectory(); 
    tiffdoc.Close(); 
} 
+0

La bibliothèque écrit des avertissements et des erreurs sur la console. Pourriez-vous les poster (le cas échéant) ici? – Bobrovsky

+0

SetField: c: \ temp \ ~ tempCapture.tif: balise inconnue EXIF_USERCOMMENT – MartinJPLAJP

+0

Je vous remercie de votre attention. Nouveau à EXIF, donc je manque probablement quelque chose d'évident :) – MartinJPLAJP

Répondre

0

Malheureusement, il semble que LibTiff.Net ne peut lire les tags EXIF ​​et ne peut pas les écrire (libtiff d'origine ne peut pas écrire des balises EXIF ​​soit). Il y a un discussion in the libtiff mailing list pourquoi il en est ainsi. Voici quelques citations de la discussion:

// FIXME -- we don't currently support writing of EXIF fields. TIFF 
// in theory allows it, using a custom IFD directory, but at 
// present, it appears that libtiff only supports reading custom 
// IFD's, not writing them. 

Leonard Rosenthol:

I don't really think that libTIFF really wants to start down the 
metadata "rabbit hole"... 

Bob Friesenhahn:

I do agree with Leonard Rosenthol that libtiff should not be in the 
business of dealing with EXIF private IFD tags (even though it 
somewhat does already). 

Quant au Unknown tag EXIF_USERCOMMENT, vous devriez read an EXIF directory first. La bibliothèque ajoutera des balises EXIF ​​à sa liste de balises connues avant de lire le répertoire EXIF ​​et ne produira plus l'erreur sur les balises inconnues plus tard.

Mais la bibliothèque ne pourra toujours pas écrire les balises EXIF ​​dans le fichier.

EDIT:

Vous avez quelques options si vous voulez seulement stocker des informations dans votre dossier et pas besoin d'être stocké dans la balise EXIF_USERCOMMENT.

Vous pouvez utiliser la balise IMAGEDESCRIPTION pour votre tâche. Voici un exemple de code qui utilise cette balise. Veuillez noter que le code utilise différents paramètres pour la méthode Open et utilise également RewriteDirectory au lieu de WriteDirectory.

string fileName = "C:\\temp\\~tempCapture.tif"; 
using (Tiff tiffdoc = Tiff.Open(fileName, "a")) 
{ 
    tiffdoc.SetDirectory(0); 
    bool bSetField = tiffdoc.SetField(TiffTag.IMAGEDESCRIPTION, "test comment field"); 
    tiffdoc.RewriteDirectory(); 
} 
+0

Merci pour votre réponse. Pouvez-vous faire des recommandations sur la façon de stocker des informations dans le fichier TIFF? J'ai seulement fini par regarder EXIF ​​en raison de la section "Commentaires d'utilisateur". J'ai besoin de stocker des conditions expérimentales dans les métadonnées pour être disponible pour l'utilisateur final. Merci pour votre contribution et votre expertise. – MartinJPLAJP

+0

@MartinJPLAJP J'ai mis à jour ma réponse. – Bobrovsky

+0

EXACTEMENT ce que je cherchais. Merci! – MartinJPLAJP

Questions connexes