Pages : 1
#1 Le 20/09/2007, à 09:58
- libre
Décodage des données IPTC
Bonjour, linuxien, linuxienne
Je suis nouveau dans le monde linux.
Je souhaite lire et écrire des données IPTC dans mes photos JPG, pour cela j'essaye d'utiliser exiv2.
Exemple pour ajouter une description:
exiv2 -M"set Iptc.Application2.Caption Anniversaire Papa" essai.jpg
ce qui a pour effet d'inscrire 'Anniversaire Papa' dans le champ Caption de l'Iptc.
Mais mon problème vient de la lecture, comment lire le champ que je viens de créer. J'ai bien essayé:
exiv2 -pi essai.jpg | grep "Iptc.Application2.Caption"
ce qui me donne
Iptc.Application2.Caption String 17 Anniversaire Papa
mais ce qui m'interesse c'est de récupérer uniquement 'Anniversaire Papa', c'est à dire tout ce qui se trouve derrière la troisième colonne.
Je pense qu'il y a moyen avec cut mais comment faire ?
La liberté signifie la responsabilité. C'est pourquoi la plupart des hommes la craignent.
Hors ligne
#2 Le 20/09/2007, à 11:09
- libre
Re : Décodage des données IPTC
Je suis finalement arrivé à quelque chose, voiçi le nautilus-script afin d'afficher quatres champs IPTC. Il me reste un problème d'alignement de champ dans zenity-list, je pense que le manque de connaissance de cut y est pour quelque chose.
#!/bin/sh
IFS=$'
'
folder=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
for i in $folder
do
IPTCdescription="`exiv2 -pi $i | grep "Iptc.Application2.Caption" | cut -d ' ' -f 28-`"
IPTCpays="`exiv2 -pi $i | grep "Iptc.Application2.CountryName" | cut -d ' ' -f 25-`"
IPTCregion="`exiv2 -pi $i | grep "Iptc.Application2.ProvinceState" | cut -d ' ' -f 22-`"
IPTCville="`exiv2 -pi $i | grep "Iptc.Application2.City" | cut -d ' ' -f 32-`"
if [ $liste != "" ]; then
liste=$liste";"$IPTCpays";"$IPTCregion";"$IPTCville";"$IPTCdescription
else
liste=$IPTCpays";"$IPTCregion";"$IPTCville";"$IPTCdescription
fi
done
IFS=$';'
zenity --list --height 500 --width 600 --title "IPTC infos" --column "Pays" --column "Région" --column "Ville" --column "Description" $liste
La liberté signifie la responsabilité. C'est pourquoi la plupart des hommes la craignent.
Hors ligne
#3 Le 20/09/2007, à 11:44
- libre
Re : Décodage des données IPTC
Problème d'alignement de champ résolu en modifiant cut
#!/bin/sh
IFS='
'
folder=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
for i in $folder
do
IPTCdescription="`exiv2 -pi $i | grep "Iptc.Application2.Caption" | cut -c 61-`"
IPTCpays="`exiv2 -pi $i | grep "Iptc.Application2.CountryName" | cut -c 61-`"
IPTCregion="`exiv2 -pi $i | grep "Iptc.Application2.ProvinceState" | cut -c 61-`"
IPTCville="`exiv2 -pi $i | grep "Iptc.Application2.City" | cut -c 61-`"
if [ $liste != "" ]; then
liste=$liste";"$IPTCpays";"$IPTCregion";"$IPTCville";"$IPTCdescription
else
liste=$IPTCpays";"$IPTCregion";"$IPTCville";"$IPTCdescription
fi
done
IFS=$';'
zenity --list --height 500 --width 600 --title "IPTC infos" --column "Pays" --column "Région" --column "Ville" --column "Description" $liste
Ce code me semble lourd, qu'en pense les pros ???
La liberté signifie la responsabilité. C'est pourquoi la plupart des hommes la craignent.
Hors ligne
#4 Le 20/09/2007, à 11:45
- Alain.g
Re : Décodage des données IPTC
Salut
Il me semble que l'utilisation de la commande iptc serait plus simple (installer le paquet libiptcdata-bin )
Pour afficher toutes les données iptc présentes : iptc photo.jpg
Pour n'afficher, par exemple, que Caption : iptc -p Caption photo.jpg
Pour plus d'infos : man iptc
Dernière modification par Alain.g (Le 20/09/2007, à 11:47)
Xubuntu Karmic !
Hors ligne
#5 Le 20/09/2007, à 12:17
- libre
Re : Décodage des données IPTC
Merçi pour ta réponse Alain.g, je ne connais pas iptc, je viens de l'installer sur tes conseils.
Effectivement iptc permet la lecture et l'écriture des données de façon plus efficace (et plus facile) mais il ne gère que les iptc, contrairement à exiv2.
Mon but est la gestion (lecture et l'écriture) des données exif et iptc les plus utiles en photographie, via nautilus-script.
La liberté signifie la responsabilité. C'est pourquoi la plupart des hommes la craignent.
Hors ligne
#6 Le 20/09/2007, à 22:39
- Alain.g
Re : Décodage des données IPTC
rien n'empêche d'utiliser les deux : libiptc pour les données IPTC et exiv2 pour le reste.
Là tu utilises trois commandes (exiv2, grep, cut) alors que tu pourrais faire directement avec iptc
Pour ce qui est de l'édition, je ne sais pas ce que tu vas choisir pour le jeu de caractères, mais je crois me souvenir que ce n'est pas du gâteau avec exiv2. Il y a bien Iptc.Envelope.CharacterSet , mais j'avais essayé sans succès.
Alors qu'avec libiptc, ça va tout seul. Mes données sont stockées en UTF-8 sans problème.
Dernière modification par Alain.g (Le 20/09/2007, à 22:41)
Xubuntu Karmic !
Hors ligne
#7 Le 21/09/2007, à 13:24
- libre
Re : Décodage des données IPTC
Merci pour ta réponse Alain, j'ai suivi ton conseil en utilisant la commande
iptc -a Keywords -v "éàè" essai.jpg
et effectivement les caractères accentués sont accepté, en voici la preuve:
Tag Name Type Size Value
-------- -------------------- --------- ---- -----
1:000 Model Version Short 2 4
1:090 Coded Character Set Binary 3 1b 25 47
2:000 Record Version Short 2 4
2:025:00 Keywords String 5 salut
2:025:01 Keywords String 6 éàè
Mais apparement iptc ajoute le champ "Coded Character Set" et ce champ empêche la lecture des photos via Jbrout. Je ne vois donc aucune autre solution que de revenir à exiv2.
Comment tu fais pour supprimer un champ composé avec iptc, j'ai essayé
iptc -d Coded Character Set essai.jpg
iptc -d 'Coded Character Set' essai.jpg
iptc -d "Coded Character Set" essai.jpg
mais rien ne fonctionne.
La liberté signifie la responsabilité. C'est pourquoi la plupart des hommes la craignent.
Hors ligne
#8 Le 21/09/2007, à 13:33
- libre
Re : Décodage des données IPTC
Ce qui pourrait expliquer beaucoup de chose
"concernant les problème d'accent, ce n'est pas un bug mais parce que ces logiciels respecte la norme actuelle IPTC. Les accents et autres caractères internationaux (kanji...) ne sont tolérés que dans la zone commentaire (la description longue)."
La liberté signifie la responsabilité. C'est pourquoi la plupart des hommes la craignent.
Hors ligne
#9 Le 21/09/2007, à 13:49
- Alain.g
Re : Décodage des données IPTC
Le plus simple est d'utiliser le code du tag (ici 1:090)
iptc -d 1:090 *.jpg
C'est dommage que Jbrout soit incapable d'interpréter correctement les données IPTC.
Je viens d'aller sur le forum de celui-ci et il y a un message de 4 ou 5 jours seulement de quelqu'un qui propose un patch pour que Jbrout utilise libiptc plutôt que iptcinfo.py qui a l'air véritablement obsolète :
a) iptcinfo.py is not complete and not properly maintained anymore --
the author just translated Perl module and apparently doesn't understand
the stuff himself (me neither, but I am not writing IPTC libraries).
J'essaierai prochainement le patch, ça devrait régler le problème.
Je comprends que les anglophones s'en soucis peu, mais pour ma part il est hors de question de renseigner les champs en français sans mettre d'accents (de préférence en UTF-8).
Xubuntu Karmic !
Hors ligne
#10 Le 21/09/2007, à 13:51
- Alain.g
Re : Décodage des données IPTC
Ce qui pourrait expliquer beaucoup de chose
"concernant les problème d'accent, ce n'est pas un bug mais parce que ces logiciels respecte la norme actuelle IPTC. Les accents et autres caractères internationaux (kanji...) ne sont tolérés que dans la zone commentaire (la description longue)."
J'ai lu ce commentaire d'un intervenant du forum. C'est tout simplement faux.
Je pourrais te donner d'autres liens si tu le souhaites ;-)
Xubuntu Karmic !
Hors ligne
#11 Le 21/09/2007, à 16:05
- libre
Re : Décodage des données IPTC
J'ai réussi à récupérer les iptc de photoshop (car je veux définitivement quitter xp) en modifiant mon script.
La lecture des iptc se fait à l'aide d'iptc (merci Alain) car je ne réussi pas à lire correctement les champs créé par photoshop avec exiv2 (accentuation)
L'écriture est réalisé à l'aide d'exif car iptc ajoute lui le champ 'Coded Character Set' , champ incompatible avec Jbrout.
Ce script,
copie les iptc ville,region,pays dans les tags pour faciliter la recherche dans Jbrout.
copie iptc caption dans le commentaire de la photo jpg, compatible avec Jbrout.
#!/bin/sh
# iptc :sudo apt-get install libiptcdata-bin
# exiv2 :sudo apt-get install exiv2
# jhead :sudo apt-get install jhead
IFS='
'
folder=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
(for i in $folder
do
#IPTCpays="`iptc $i | grep "Country Name" | cut -c 48- | sed -e "s/é/e/g"`"
#IPTCregion="`iptc $i | grep "Province/State" | cut -c 48- | sed -e "s/é/e/g"`"
#IPTCville="`iptc $i | grep "City" | cut -c 48- | sed -e "s/é/e/g"`"
#Lecture des données photoshop via IPTC (le seul capable de décoder les accents)
IPTCpays="`iptc $i | grep "Country Name" | cut -c 48-`"
IPTCregion="`iptc $i | grep "Province/State" | cut -c 48-`"
IPTCville="`iptc $i | grep "City" | cut -c 48-`"
IPTCdescription="`iptc $i | grep "Caption/Abstract" | cut -c 48-`"
#Ecriture au même emplacement, ce qui permet de recoder les caractères
exiv2 -M"set Iptc.Application2.CountryName $IPTCpays" $i
exiv2 -M"set Iptc.Application2.ProvinceState $IPTCregion" $i
exiv2 -M"set Iptc.Application2.City $IPTCville" $i
#Ajout des même données dans les TAG, pour la recherche dans Jbrout
exiv2 -M"add Iptc.Application2.Keywords $IPTCpays" $i
exiv2 -M"add Iptc.Application2.Keywords $IPTCregion" $i
exiv2 -M"add Iptc.Application2.Keywords $IPTCville" $i
#Ajout du commentaire dans le jpg
jhead -cl $IPTCdescription $i
done) | zenity --progress --auto-close --pulsate
Je ne comprend pas exiv2, ici, mon script fonctionne parfaitement avec Jbrout.
Mais si j'ajoute manuellement un tag 'exiv2 -M"add Iptc.Application2.Keywords essai" photo.jpg' alors Jbrout ne reconnait plus la vignette de la photo.jpg, impossible aussi de la reconstruire.
Dernière modification par libre (Le 21/09/2007, à 18:33)
La liberté signifie la responsabilité. C'est pourquoi la plupart des hommes la craignent.
Hors ligne
#12 Le 11/10/2007, à 09:48
- rereleputois
Re : Décodage des données IPTC
Bonjour tout le monde,
au sujet du support des accents, une bonne nouvelle pour les utilisateurs de exiv2 :
Pour info :
4-Sep-2007 XMP testing
The XMP implementation is now in the trunk in SVN and it is reasonably complete and ready for testing. Please try it out and let us know your comments. See this announcement for more details.
31-Aug-2007 XMP support
We're working on adding XMP support to the library, which should become the main feature of the next release. Contributions are welcome, in particular we need input from potential users about API preferences and XMP test data. You are invited to join this discussion in the forum and contribute your viewpoints.
... Le support XMP ne devrait donc pas tarder ...:D avec, du coup, le support des accents ... enfin, si j'ai bien compris !:/
A+
Regis
Quand on pense qu'il suffirait qu'on ne l'achete pas pour pas que ca se vende ! ... et ben voui, c'est aussi simple que ça
Hors ligne