Bonjour
Après avoir saisi et commenté quelques milliers de photos avec XnView, j'aimerai pouvoir les traiter en Python. Pour les données EXIF et IPTC/XMP il y a des modules adaptées.
Mais pour le commentaire intégré un peu d'aide serait la bienvenue. J'ai vu que cette chaîne, sous forme de bytes, se trouve dans XnView après \xff\xfe au début du fichier, mais il me semble avoir compris qu'elle pourrait être aussi bien à la fin.
Comment pouvoir lire cette chaîne dans un programme ? en créer une nouvelle ? modifier l’existante ? y a t'il des spécifications particulières sur le contenu et la position ?
Merci de votre aide et à XnView pour le chef d’œuvre !
Gérer commentaire d'un jpg en Python
Moderators: XnTriq, helmut, xnview
-
- Posts: 27
- Joined: Sun Jan 10, 2010 10:54 pm
Gérer commentaire d'un jpg en Python
Jean
LinuxMint 15 / XnView MP 0.64
LinuxMint 15 / XnView MP 0.64
-
- Author of XnView
- Posts: 42477
- Joined: Mon Oct 13, 2003 7:31 am
- Location: France
-
- Posts: 27
- Joined: Sun Jan 10, 2010 10:54 pm
Re: Gérer commentaire d'un jpg en Python
Merci Pierre
Un peu de travail sur les chaînes de bytes, mais ça a l'air de marcher
Un peu de travail sur les chaînes de bytes, mais ça a l'air de marcher
Jean
LinuxMint 15 / XnView MP 0.64
LinuxMint 15 / XnView MP 0.64
-
- Posts: 27
- Joined: Sun Jan 10, 2010 10:54 pm
Re: Gérer commentaire d'un jpg en Python
Re Bonjour
Bien qu'en travaillant sur le format binaire du fichier et en suivant les spécifications du JPEG, j'arrive à mes fins, j'ai finalement adopté une autre approche plus sécurisée et plus versatile. J'indique ceci pour ceux qui auraient les même besoins.
A l'aide du module subprocess de Python, j'invoque les commandes batch du module exiv2(metadata de multiples formats)
Par exemple pour extraire le commentaire:
Et merci encore à Pierre
Bien qu'en travaillant sur le format binaire du fichier et en suivant les spécifications du JPEG, j'arrive à mes fins, j'ai finalement adopté une autre approche plus sécurisée et plus versatile. J'indique ceci pour ceux qui auraient les même besoins.
A l'aide du module subprocess de Python, j'invoque les commandes batch du module exiv2(metadata de multiples formats)
Par exemple pour extraire le commentaire:
Code: Select all
import subprocess
def exec_bash(bash_string):
global pipo #un subprocess.PIPE doit être défini préalablement, réutilisable
#la chaine Bash doit être découpée en parties
#on récupère le stdout par le PIPE
#la chaine de bytes est décodée, le \n final est supprimé
return subprocess.run(bash_string.split(), stdout=pipo).stdout.decode()[0:-1]
pipo=subprocess.PIPE
bashComment='exiv2 -pc '
phot="xxxx.jpg"
comment=exec_bash(bashComment+phot)
Jean
LinuxMint 15 / XnView MP 0.64
LinuxMint 15 / XnView MP 0.64