Page 1 of 1

Gérer commentaire d'un jpg en Python

Posted: Sat Jun 29, 2019 7:38 pm
by ramses
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 !

Re: Gérer commentaire d'un jpg en Python

Posted: Sun Jun 30, 2019 8:29 am
by xnview
il faut voir du coté du format JPEG

Re: Gérer commentaire d'un jpg en Python

Posted: Mon Jul 01, 2019 2:40 pm
by ramses
Merci Pierre
Un peu de travail sur les chaînes de bytes, mais ça a l'air de marcher

Re: Gérer commentaire d'un jpg en Python

Posted: Sat Aug 03, 2019 3:15 pm
by ramses
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:

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)
Et merci encore à Pierre