Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Ecrire une métadonnée XMP au départ d'une autre. [ Multimédia / Image & Vidéo ] (Jeanfil777)

jeudi 15 février 2007 à 01:07:16 | Ecrire une métadonnée XMP au départ d'une autre.

Jeanfil777

Bonjour,
Je ne suis pas développeur et ne connais qu'un tout petit peu VBA. Vraiment débutant ++. Mais je comprends vite.
Je me débrouille pour ouvrir un fichier dans un répertoire, du style:
Set fso = CreateObject("Scripting.FileSystemObject")
With Application.FileSearch
    .LookIn = "C:\Mes Documents")
    .Filename = "*.*"
    .Execute
NbreFichiers = .FoundFiles.Count
For i = 1 To NbreFichiers
        Set f = fso.GetFile(.FoundFiles(i))
Next i

Voulant manipuler mes photos par lots pour les renommer, j'ai trouvé sur [ Lien ], une dll (ExifView.dll) qui me permet ce code (accès en lecture aux propriétés Exif de image1.jpg) :

Dim col As ExifTags
Dim tg As ExifTag
Dim ExifObjet As ExifPage
Dim Message As String

' create ExifPage object
Set ExifObjet = New ExifPage

' extract exif info in the file named and it will return ExifTags collection object
Set col = ExifObjet.ExtractExifInfo("C:\Mes Documents\image1.jpg")

' get all the ExifTag objects for information
For Each tg In col
      Message = Message + tg.Name + " : " + vbTab + tg.Value + vbCrLf

Next
MsgBox Message

J'aimerais maintenant accéder aux propriétés XMP de la photo, en lecture et en écriture.
(en fait, c'est pour insérer automatiquement [j'ai 7000 photos à traiter] la date de prise de vue et le nom du fichier image dans le champs XMP 'Description' correspondant aussi au champs IPTC 'Légende'... celui que Picassa permet d'afficher dans son diaporama!)
Mais ma dll ExifView.dll ne traite pas ces métadonnées XMP...

Merci de me renseigner :
1. quelle XXX.dll charger dans C:\WINDOWS\system32 (et faire tourner "regsvr32.exe XXX.dll")
2. m'écrire un bout de code qui écrive dans la 'Description' de l'image "C:\Mes Documents\image1.jpg" la date de prise de vue (format YYYY-MM-hhm°mm°ss) suivi du nom du fichier.
Merci ++
JeanFil777


jeudi 21 février 2008 à 17:56:05 | Re : Ecrire une métadonnée XMP au départ d'une autre.

hugoclavet

Essaye chilkat xmp activex...

Hugo

jeudi 21 février 2008 à 23:48:53 | Re : Ecrire une métadonnée XMP au départ d'une autre.

Jeanfil777

Merci du tuyau Hugo ... mais sur http://www.softpedia.com/get/Programming/Components-Libraries/Chilkat-XMP-ActiveX-Component.shtml,
ça revient quand-même à 149$...
Un tuyau pour un équivalent gratuit ?

JeanFil777

vendredi 29 février 2008 à 01:31:04 | Re : Ecrire une métadonnée XMP au départ d'une autre.

hugoclavet

Réponse acceptée !

Le très puissant Exiftool est gratuit. Programme en ligne de commande seulement.

Petit example pour utiliser en écriture a partir de vb. Je n'ai pas le temps de raffiner ça mais voila quand même:


Private Sub cmdÉcrit_Click()
Dim astrMotsClés() As String

Dim dDate As Date
Dim tz As New cTimeZone
Dim inta As Integer
dDate = DateAdd("h", -Val(tz.Offset), Now)
Set tz = Nothing

ReDim astrMotsClés(1 To 2)
astrMotsClés(1) = "Mot clé 1"
astrMotsClés(2) = "Mot clé 2"

ExifInfo "c:\", "C:\test.jpg"
ExifWrite "c:\", "C:\test.jpg", "Ici le titre", "Ici la description", "Ici l'auteur", 5, astrMotsClés, dDate, "Commentaire", "Copyright"
End Sub


Private Function ExifWrite(ExifToolPath As String, Fichier As String, Titre As String, _
                            Description As String, Auteur As String, _
                            Notation As Integer, MotsClés() As String, _
                            dDatePriseDeVue As Date, Commentaires As String, _
                            Copyright As String) As Double
Dim strCommandLine As String
Dim inta As Integer

strCommandLine = ExifToolPath & "exiftool "

If Titre <> "" Then
    strCommandLine = strCommandLine & "-title=""" & Titre & """ "
    strCommandLine = strCommandLine & "-XPTitle=""" & Titre & """ "
End If

If Commentaires <> "" Then
    strCommandLine = strCommandLine & "-UserComment=""" & Commentaires & """ "
    strCommandLine = strCommandLine & "-XPComment=""" & Commentaires & """ "
End If

If Description <> "" Then
    strCommandLine = strCommandLine & "-title=""" & Description & """ "
End If

If Auteur <> "" Then
    strCommandLine = strCommandLine & "-creator=""" & Auteur & """ "
    strCommandLine = strCommandLine & "-XPAuthor=""" & Auteur & """ "
End If

If Copyright <> "" Then
    strCommandLine = strCommandLine & "-xmp:rights=""" & Copyright & """ "
End If

strCommandLine = strCommandLine & "-DateTimeOriginal=""" & dDatePriseDeVue & """ "

Dim intNotationPourcent As Integer
Select Case Notation
    Case Is = 0
        intNotationPourcent = 0
    Case Is = 1
        intNotationPourcent = 1
    Case Is = 2
        intNotationPourcent = 25
    Case Is = 3
        intNotationPourcent = 50
    Case Is = 4
        intNotationPourcent = 75
    Case Is = 5
        intNotationPourcent = 99
    Case Else
        intNotationPourcent = 0
End Select

If Notation < 6 Then
    strCommandLine = strCommandLine & "-Rating=""" & Notation & """ "
    strCommandLine = strCommandLine & "-RatingPercent=""" & intNotationPourcent & """ "
Else
    strCommandLine = strCommandLine & "-Rating=5 "
    strCommandLine = strCommandLine & "-RatingPercent=""" & 99 & """ "
End If

For inta = LBound(MotsClés) To UBound(MotsClés)
    strCommandLine = strCommandLine & "-keywords=""" & MotsClés(inta) & """ "
    strCommandLine = strCommandLine & "-LastKeywordXMP=""" & MotsClés(inta) & """ "
    strCommandLine = strCommandLine & "-Subject=""" & MotsClés(inta) & """ "
Next inta

strCommandLine = strCommandLine & "-XPKeywords=""" & Join(MotsClés, ";") & """ "

strCommandLine = strCommandLine & "-k -fast " 'k pour que la fenetre ne se ferme pas, fast surement inutile en ecriture

strCommandLine = strCommandLine & """" & Fichier & """"

ExifWrite = Shell(strCommandLine, vbNormalFocus) 'Pour que la fenetre ne se ferme pas

End Function

Private Sub ExifInfo(ExifToolPath As String, Fichier As String)
Dim strCommandLine As String
Dim inta As Integer

strCommandLine = ExifToolPath & "exiftool "
strCommandLine = strCommandLine & "ScanForXMP "
strCommandLine = strCommandLine & """" & Fichier & """ -k"

Shell strCommandLine, vbNormalFocus

End Sub

Hugo


vendredi 29 février 2008 à 17:00:33 | Re : Ecrire une métadonnée XMP au départ d'une autre.

Jeanfil777

Merci ++
Je vais essayer ça d'ici une ou deux semaines (peu de temps en ce moment).
Me donneriez-vous votre email pour vous joindre au cas où... ?
Si oui, me joindre sur jean-philippe.renders(arobase)wanadoo.fr
Cordialement.

JeanFil777



Cette discussion est classé dans : fichier, message, dll, xmp, tg


Répondre à ce message

Sujets en rapport avec ce message

Message d'erreur VBA6.DLL est manquant [ par dourd1 ] BonjourVoici le petit problème que j'ai en ce momentJ'ai un fichier excel avec des macro contenant du vbaces macros on été faites sous excel 2000 ce f Comment modifier le fichier comdlg32.dll [ par tendemo ] Salut, est qu'on peut modifier le fichier comdlg32.dll ou gerer ses activites ? Je comprendre que cette fichier, controle les dialogue de windows. Est Message de modification fichier excel [ par avyrex1926 ] Bonjour à tous,J'ai un fichier excel, que je dois remplire régulièrement en entrant des données.J'ai des onglets avec le nom de tous les mois de l'ann Envoyer un message à l'utilisateur d'un fichier Excel via une autre macro reseau [ par rikoo83 ] Bonjour, je me trouve devant un problème.J'ai réalisé une macro qui me permet de savoir si un fichier Excel est ouvert ou non sur le réseau.Cependant Erreur 53 : Fichier introuvable [ par ArnaudEIC ] Bonjour,j'ai l'erreur suivante : "Erreur 53 : Fichier introuvable : toto.dll" sur l'ordinateur d'un de mes clients et je n'arrive pas a reproduire l'e Création fichier dll [ par gargourifahmi ] Salut à tous, Voila,j'ai un petit pb d'un ami qui a une application en vb6 qui doit créer des fichiers dll à partir de fichiers source assembleur pour message d'erreure a l'execution [ par karimvb120576 ] Salut:voila il ya toujour un message d'erreure "The language vb6fr.dll could not be fond" quand je lance un  executable  que j'ai créé avec le visual Pb de point d'entrée d'une DLL.. [ par codebleu ] Bonjour,Je travaille sur VB2005 Express et j'ai compilé un projet type "ConsoleApplication" s'appellant "RefrigData". J'ai obtenu un fichier exécutabl Erreur ieframe.dll [ par Morinaux ] Bonjour,Récemment lorsque j'ai voulu intégrer le composant Microsoft Internet Control j'ai obtenu l'erreur suivante :Fichier introuvable : 'C:\windows Utilisation d'une boîte de dialogue [ par BAUHAUS44 ] Bonjour, Je travaille actuellement sur la création d'une macro VB pour l'utiliser sur un fichier excel. Dans cette macro, je fais apparaître un messa


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.