exif problème d'encodage
Le
Une Bévue

Bonjour,
je lis (via php) les infos exif d'une image prise par un téléphone
Samsung SM-N7505.
quand je lis ça au terminal j'ai une ligne "Comment" avec un caractère
mal encodé (???) :
Comment : File written by Adobe Photoshop� 5.0
--^--
du coup je ne peux pas lire, avec php, les autres données.
mais je pourrais demander à exiftool de transcoder, quelqu'un a une idée
du codaage utilisé pour produire cette erreur ?
une autre info des métadonnéess :
ExifByteOrder : Little-endian (Intel, II)
au cas où bous auriez quelque lumière.
le fichier en question est une photo prise par un téléphone et envoyée
par email, je ne vois pas ce que fais photoshop là-dedans (c'est moi qui
me suis envoyé la photo) ?
je lis (via php) les infos exif d'une image prise par un téléphone
Samsung SM-N7505.
quand je lis ça au terminal j'ai une ligne "Comment" avec un caractère
mal encodé (???) :
Comment : File written by Adobe Photoshop� 5.0
--^--
du coup je ne peux pas lire, avec php, les autres données.
mais je pourrais demander à exiftool de transcoder, quelqu'un a une idée
du codaage utilisé pour produire cette erreur ?
une autre info des métadonnéess :
ExifByteOrder : Little-endian (Intel, II)
au cas où bous auriez quelque lumière.
le fichier en question est une photo prise par un téléphone et envoyée
par email, je ne vois pas ce que fais photoshop là-dedans (c'est moi qui
me suis envoyé la photo) ?
samsung, c'est-y pas Chinois ?
Y z'auront "oublié" de supprimer le copyright de leur copie de code de
manip d'images ?
Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
je ne sais pas chinois ou coréen ?
c'est casse pied quand-même de perdre du temps pour un ®, ...
Le plus probable, c'est qu'il envoie de l'ISO-8859-1 alors que ton
terminal est en UTF-8.
--
Olivier Miakinen
oui, c'est ce que je pense aussi. au terminal pas de pb, je vois un "?"
dans un carré au lieu de ® mais avec php ça bloque complétement je fais un :
exec ("/usr/local/bin/exiftool $options $path", $infos, $exitstatus);
quand j'ai ce pb, $infos ET $exitstatus restent désespéremment vides...
bon, c'est dans le champs de commentaire, donc, pour l'instant je ne le
lis plus...
Tu veux dire qu'en retour $exitstatus n'est même pas un entier ?!?
As-tu essayé :
- de positionner une valeur de LANG lors de l'appel ?
exec("LANG=(un truc compatible avec ton OS) exiftool ...", ...);
- de faire un pipe avec iconv ?
exec("exiftool ... | iconv ...", ...);
- plus simplement de positionner le paramètre charset que je lis dans
la doc ?
https://linux.die.net/man/1/exiftool
exec("exiftool -charset UTF-8 ... ", ...);
--
Olivier Miakinen
Oui, oui, strictement rien en retour même pas un exitstatus à 1...
ça "hang"...
non, je préfère la dernière solution avec l'argument -charset=Latin1
ça non, mais bon, il m'est difficile de faire ça seulement pour les
photos du samsung et surtout pour un commentaire inutile (dans ce cas).
oui, j'ai essayé, pas probant.
peut-être devrais-je essayer avec Latin1 ??
sur le group php US quelqu'un a répondu que les normes jpeg datent d'un
temps où l'encodage était :
Not-so-much faulty as software that doesn't understand character set
encodings. JPEG comments are a 32,767 octet block of whatever randomness
you want to put in there. There is no way to indicate what encoding or
set of characters are represented. Adobe is probably just using
something stupid like ISO-8859-1 or (worse) the Microsoft "equivilents"
like Windows-1250 or Windows-1252.
Tu devrais surtout savoir quel charset est utilisé
- par ton terminal de commandes
- dans tes scripts PHP
- dans le fichier lui-même
Ensuite, tu as pas mal de lecture ici :
http://www.sno.phy.queensu.ca/~phil/exiftool/faq.html#Q10
En particulier, on y voit comment définir d'une part le charset
externe (qui doit être égal à celui du terminal quand tu lances
la commande depuis le terminal, mais égal à celui de ton script
PHP quand tu la lances depuis PHP), d'autre part le charset
interne pour différents types de métadonnées (exif, iptc, id3,
photoshop ou quicktime).
Bon courage !
P.-S. : je ne peux pas t'aider pour déterminer le charset de ton
terminal ou celui de tes scripts PHP, mais si tu mets le fichier
sur cjoint je peux peut-être essayer de trouver le charset interne.
--
Olivier Miakinen
ben UTF-8
UTF-8
là c'est un mystère, d'après le lien que tu donnes ci-dessous, il est
spécifié que :
Certain meta information formats allow coded character sets other than
plain ASCII. When reading, most known encodings are converted to the
external character set according to the exiftool "-charset CHARSET" or
-L option, or to UTF‑8 by default.
donc, les entrées sorties d'exiftool se font en UTF-8 par défaut, ce qui
me va très bien.
j'ai essayé plusieurs encodages, rien n'y fait
ça c'et très facile, il n'y a rien de vraiment confidentiel, une banale
photo prise dans le tgv.
je vais en mettre 2, car j'ai fait une manip :
j'ai dupliqué la photo originale :
$ cp 20161202_085945.jpg 20161202_085945_TEST.jpg
pour 20161202_085945_TEST.jpg j'ai changé au terminal le champs
"Comment" (le seul posant problème) par :
$ exiftool -Comment='File written by Adobe Photoshop® 5.0'
/Users/yt/Downloads/20161202_085945_TEST.jpg
donc j'ai écris "®" à la place du "�", ensuite j'ai relu ce fichier au
terminal :
$ exiftool /Users/yt/Downloads/20161202_085945_TEST.jpg
ExifTool Version Number : 10.20
File Name : 20161202_085945_TEST.jpg
Directory : /Users/yt/Downloads
[...]
Comment : File written by Adobe Photoshop® 5.0
[...]
Field Of View : 60.3 deg
Focal Length : 3.7 mm (35 mm equivalent: 31.0 mm)
Hyperfocal Distance : 1.47 m
.-[:~]-[16-12-16 08:40:54]
'->$
tu peux voir que là, le caractère "®" m'est bien restitué...
le fichier de test (donc bon) :
le fichier original avec le "�" :
mais bon ne perd pas trop de temps là-dessus...
Ok, parfait.
C'est codé C2 AE, soit le ® en UTF-8.
C'est codé A8, soit le ® en MacRoman.
Cf. Essaye :
-charset exif=MacRoman
-charset iptc=MacRoman
-charset id3=MacRoman
-charset photoshop=MacRoman
-charset quicktime=MacRoman
--
Olivier Miakinen
rien de + "normal"
bon, d'accord.
toujours :
Comment : File written by Adobe Photoshop� 5.0