Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

libre a écrit :

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