IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] extraction données IPTC d'un JPG


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut [C#] extraction données IPTC d'un JPG
    Bonjour,

    je suis à la recherche d'un bout de code en C# qui me permettrait d'extraire les mots clés d'un fichier JPG.

    Je voudrais pouvoir lire cette données dans les IPTC à la manière des données EXIF (image1.PropertyItems)

    J'ai chercher sur le net mais je n'ai pas trouver en C# et la dernière discussion sur le forum qui en parle date de 2006.
    Y a t il du nouveau sur ce sujet ?

    J'ai entendu parler que le Framework 3.0 integrait cette possibilité de récupérer les données IPTC. Est ce vrai ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    http://www.codeproject.com/KB/graphi...extractor.aspx
    http://www.codeproject.com/KB/IP/Searcharoo_6.aspx (le code source contient des méthodes pour extraire les informations des images JPEG)

    ?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    Merci de ton aide Smyley, J'ai bien lu les méthodes et surtout celle-ci (http://www.shahine.com/omar/ReadingX...PEGUsingC.aspx) mais j'ai un problème avec l'utilisation de NamespaceManager.

    Dans SharpDevelop, j'ai ce message :
    The name 'NamespaceManager' does not exist in the current context (CS0103) - F:\Data\Developpement\En Dev\DL Photo\DL Photo\MainForm.cs:190,13
    J'ai bien :
    C'est la 1ère fois que j'utilise le Xml dans mes soft.

    J'ai essayé de supprimer ce NamespaceManager mais j'ai ce message lors de l'execution :
    Exception System.ApplicationException was thrown in debuggee:
    Error occured while readning meta-data from image. The error was: Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.

    .ctor() - f:\Data\Developpement\En Dev\DL Photo\DL Photo\MainForm.cs:246,5
    Main() - f:\Data\Developpement\En Dev\DL Photo\DL Photo\MainForm.cs:46,4
    Peux tu m'aider merci d'avance.

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    laisse le NamespaceManager si c'est là. Il est dans l'espace de nom System.Xml de l'assembly System.Xml.dll. Tu as bien une référence vers elle ?

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    ça y est avec ce code j'arrive à récupérer les mots clés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    try 
    { 
    	doc.LoadXml(GetXmpXmlDocFromImage(srcFile));
     
    	XmlNamespaceManager NamespaceMger = new XmlNamespaceManager(doc.NameTable);
    	NamespaceMger.AddNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
    	NamespaceMger.AddNamespace("exif", "http://ns.adobe.com/exif/1.0/");
    	NamespaceMger.AddNamespace("x", "adobe:ns:meta/");
    	NamespaceMger.AddNamespace("xap", "http://ns.adobe.com/xap/1.0/");
    	NamespaceMger.AddNamespace("tiff", "http://ns.adobe.com/tiff/1.0/");
    	NamespaceMger.AddNamespace("dc", "http://purl.org/dc/elements/1.1/");
     
    	// get keywords
    	XmlNode xmlNode = doc.SelectSingleNode("/rdf:RDF/rdf:Description/dc:subject/rdf:Bag", NamespaceMger);
     
    	if (xmlNode != null)
    	{
    		foreach (XmlNode li in xmlNode)
    		{
    			Keywords.Add(li.InnerText);
    			MessageBox.Show(li.InnerText, "KeyWords", MessageBoxButtons.OK);
    		}
    	}
    } 
    catch (Exception ex) 
    { 
    	throw new ApplicationException("Error occured while readning meta-data from image. The error was: " + ex.Message); 
    }
    Puis cette procédure pour lire le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public static string GetXmpXmlDocFromImage(string filename) 
    { 
    	string contents; 
    	string xmlPart; 
    	string beginCapture = "<rdf:RDF"; 
    	string endCapture = "</rdf:RDF>"; 
    	int beginPos; 
    	int endPos; 
     
    	using (System.IO.StreamReader sr = new System.IO.StreamReader(filename))
    	{
    		contents = sr.ReadToEnd(); 
    		sr.Close(); 
    	}
     
    	beginPos = contents.IndexOf(beginCapture, 0); 
    	endPos = contents.IndexOf(endCapture, 0); 
     
    	xmlPart = contents.Substring(beginPos, (endPos - beginPos) + endCapture.Length); 
     
    	return xmlPart; 
    }
    Maintenant, je cherche à écrire dans le fichier jpg pour mettre à jour les mots clés.
    Avez vous une idée ?

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    vu qu'apparament c'est du XML ton truc ...

    http://jfdeterme.developpez.com/tuto...rp/tuto_xpath/

    ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/08/2006, 12h34
  2. Extraction données
    Par francois78 dans le forum Access
    Réponses: 5
    Dernier message: 19/05/2006, 12h56
  3. [XSLT] php xml xslt extraction données
    Par Cyrille1969 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/04/2006, 23h23
  4. Extraction données d'une ArrayList
    Par Teb dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 10/04/2006, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo