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

Développement Windows Discussion :

Modifier données Exif image


Sujet :

Développement Windows

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut Modifier données Exif image
    Bonsoir à tous,

    Il y a bien longtemps que j'ai fais du VB.NET et je coince sur un problème.
    Un copain m'a demandé de lui faire une petite application afin de modifier en série les métadonnées de ses images.

    Toutefois, je n'arrive pas à enregistrer mes modifications de métadonnées Exif (dernière ligne de code.

    Voici mon code :

    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
    Sub addMetadata(strfilePicture As String)
            'JPG
            '40091 : Titre
            '40092 : Commentaires
            '40093 : Auteurs
            '40094 : Mots-clés
            '40095 : Objet
     
            Dim img As Image = Image.FromFile(strfilePicture)
     
            Dim propItems As PropertyItem() = img.PropertyItems
     
            For Each propItem In propItems
                Select propItem.Id
                    Case 40091
                        propItem.Value = Encoding.UTF8.GetBytes("Demo VB.Net")
                End Select
            Next
            'Ca coince ici
            img.Save(strfilePicture)
     
    End Sub
    Quelqu'un pourrait il m'indiquer où est mon erreur ?

    Merci à tous

    Cordialement

    Christophe

    PS : désolé pour la mise en forme du code mais il semblerait que la balise [CODE] ne fonctionne pas bien
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    dire "ca coince" ne vous mènera nulle part
    s'il y a une erreur il nous faut le message d'erreur ...

    après de mémoire je crois que fromfile ne ferme pas le fichier, rendant impossible la sauvegarde sur le même fichier
    auquel cas il faudrait tenter une autre méthode pour obtenir l'objet image
    pour obtenir les octets du fichier il y a system.io.file.ReadAllBytes (et ca ferme le fichier)

    au passage le .save peut prendre un deuxième paramètre, qui est le type de fichier a générer, bien qu'avec un peu de chance en voyant .jpg à la fin il décide de lui même d'utiliser l'encodage jpeg
    il y a même moyen de définir le pourcentage de compression du jpeg (ca serait dommage de perdre en qualité pour modifier un exif (d'ailleurs y a des dizaines de logiciels capables de modifier un exif en masse))


    concernant la mise en forme du code, elle est différente d'un sous forum à l'autre en fonction du langage
    autant dans la partie vb.net il gère pour du vb.net, pour le reste de .net c'est du c# par défaut
    il est possible de forcer la mise en page en rajoutant =langage derrière code dans la balise d'ouverture
    code=vb.net code=sql etc...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir Pol,

    Après ta réponse, j'ai passé 2 soirées à faire des tests dans tous les sens et sans succès.
    J'ai finalement décidé de sauvegarder mes images dans un autre dossier au lieu de chercher à les écraser.
    Néanmoins, les nouvelles propriétés de métadonnées ne s'inscrivent pas dans ma nouvelle image.

    A priori, la fonction img.SetPropertyItem(p) n'a pas d'effet.

    Pourrais tu m'indiquer ou est mon erreur ?

    Code vb.net : 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
     Private Sub addMetadata(strfilePicture As String, folderOut As String)
     
            'Dim strfilePicture As String = "D:\img\a04.jpg"
     
            'Image
            Dim img As Image = Image.FromFile(strfilePicture)
     
            'Tableau des propriétés de l'image
            Dim properties As PropertyItem() = img.PropertyItems
     
            'Parcours du tableau
            For Each p As PropertyItem In properties
                'Si champ Titre
                If p.Id = 40091 Then
                    'Changement de texte dans le champ Titre de la métadonnée
                    p.Value = Encoding.UTF8.GetBytes("Demo VB.Net")
                    ' Applique les nouvelles propriétés à l'image mais cela ne fonctionne pas
                    img.SetPropertyItem(p)
                End If
            Next
     
            'Enregistre l'image
            img.Save(folderOut & "\" & System.IO.Path.GetFileName(strfilePicture))
     
        End Sub
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    es tu sur de passer sur la ligne qui set ?
    parce que dans ton code, si cette données exif n'existe pas (la 40091), ton code ne l'ajoutera pas
    après je maitrise pas l'exif, mais pour moi seules les infos ayant une valeur pourraient être présentes dans les métadonnées
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour Pol,

    En effet, tu as raison.
    Après de nombreux tests, je me suis aperçu que la nouvelle métadonnée était inscrite à condition qu'il n'y ait pas déjà une métadonnée d'inscrite dans l'image.

    Dans mon image exemple, j'ai saisie manuellement le mot "Test" dans le champ titre et du coup mon nouveau texte (Demo VB.Net) ne s'inscrit pas.
    En revanche, si le champ titre est nul, le code fonctionne.

    Question : comment faire pour modifier une métadonnées existante ?
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu approuves l'opposé de ce que je dis ...

    par contre je peux affirmer l'inverse de ce que tu dis, que j'ai testé ce matin

    une fois que tu auras relu tout ca plusieurs fois y compris ton code ci dessus (et compris), tu n'auras plus qu'à chercher comment ajouter une nouvelle property
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir Pol,

    J'ai finalement passé un trentaine d'heures cette semaine à fouiller et tester je ne sais combien de codes et tout çà pour n'aboutir à rien.

    J'ai trop de travail pour me permettre de passé plus de temps là dessus.

    De plus, j'ai trouvé une application qui se nomme « Exif Pilot » et qui répond complètement aux besoins de mon copain.

    Merci d'avoir pris la peine de t'intéresser à ce sujet.
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier récursivement les données EXIF de certains fichiers
    Par Spheerys dans le forum Shell et commandes GNU
    Réponses: 22
    Dernier message: 11/06/2014, 16h01
  2. Modifier les données exif
    Par fab039 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/06/2008, 17h35
  3. Modifier les données exif
    Par fab039 dans le forum ASP
    Réponses: 0
    Dernier message: 24/06/2008, 15h34
  4. [ImageMagick] Le PHP et les données EXIF d'une image JPEG
    Par kerlann dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 06/05/2007, 00h07
  5. [SQL] Base de données d'images - ajouter des métadonnées
    Par gandalf_le_blanc dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/06/2004, 19h52

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