Discussion:
exif problème d'encodage
(trop ancien pour répondre)
Une Bévue
2016-12-14 07:18:39 UTC
Permalink
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) ?
SAM
2016-12-14 17:28:56 UTC
Permalink
Post by Une Bévue
Bonjour,
je lis (via php) les infos exif d'une image prise par un téléphone
Samsung SM-N7505.
Comment : File written by Adobe Photoshop� 5.0
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
Une Bévue
2016-12-14 17:37:04 UTC
Permalink
Post by SAM
samsung, c'est-y pas Chinois ?
Y z'auront "oublié" de supprimer le copyright de leur copie de code de
manip d'images ?
je ne sais pas chinois ou coréen ?

c'est casse pied quand-même de perdre du temps pour un ®, ...
Olivier Miakinen
2016-12-14 18:18:45 UTC
Permalink
Post by Une Bévue
quand je lis ça au terminal j'ai une ligne "Comment" avec un caractère
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 codage utilisé pour produire cette erreur ?
Le plus probable, c'est qu'il envoie de l'ISO-8859-1 alors que ton
terminal est en UTF-8.
--
Olivier Miakinen
Une Bévue
2016-12-15 05:34:55 UTC
Permalink
Post by Olivier Miakinen
Le plus probable, c'est qu'il envoie de l'ISO-8859-1 alors que ton
terminal est en UTF-8.
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...
Olivier Miakinen
2016-12-15 11:06:47 UTC
Permalink
Post by Une Bévue
Post by Olivier Miakinen
Le plus probable, c'est qu'il envoie de l'ISO-8859-1 alors que ton
terminal est en UTF-8.
oui, c'est ce que je pense aussi. au terminal pas de pb, je vois un "?"
exec ("/usr/local/bin/exiftool $options $path", $infos, $exitstatus);
quand j'ai ce pb, $infos ET $exitstatus restent désespéremment vides...
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
Une Bévue
2016-12-15 18:01:17 UTC
Permalink
Post by Olivier Miakinen
Tu veux dire qu'en retour $exitstatus n'est même pas un entier ?!?
Oui, oui, strictement rien en retour même pas un exitstatus à 1...
ça "hang"...
Post by Olivier Miakinen
- de positionner une valeur de LANG lors de l'appel ?
exec("LANG=(un truc compatible avec ton OS) exiftool ...", ...);
non, je préfère la dernière solution avec l'argument -charset=Latin1
Post by Olivier Miakinen
- de faire un pipe avec iconv ?
exec("exiftool ... | iconv ...", ...);
ç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).
Post by Olivier Miakinen
- plus simplement de positionner le paramètre charset que je lis dans
la doc ?
https://linux.die.net/man/1/exiftool
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.
Olivier Miakinen
2016-12-15 20:37:20 UTC
Permalink
Post by Une Bévue
Post by Olivier Miakinen
- plus simplement de positionner le paramètre charset que je lis dans
la doc ?
https://linux.die.net/man/1/exiftool
oui, j'ai essayé, pas probant.
peut-être devrais-je essayer avec Latin1 ??
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
Une Bévue
2016-12-16 08:00:14 UTC
Permalink
Post by Olivier Miakinen
Tu devrais surtout savoir quel charset est utilisé
- par ton terminal de commandes
ben UTF-8
Post by Olivier Miakinen
- dans tes scripts PHP
UTF-8
Post by Olivier Miakinen
- dans le fichier lui-même
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.
Post by Olivier Miakinen
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).
j'ai essayé plusieurs encodages, rien n'y fait
Post by Olivier Miakinen
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.
ç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
.-[***@mbp.local:~]-[16-12-16 08:40:54]
'->$

tu peux voir que là, le caractère "®" m'est bien restitué...
le fichier de test (donc bon) :
<Loading Image...>

le fichier original avec le "�" :
<http://www.cjoint.com/c/FLqh6XNTJZX>
<Loading Image...>


mais bon ne perd pas trop de temps là-dessus...
Olivier Miakinen
2016-12-16 10:04:23 UTC
Permalink
Post by Une Bévue
Post by Olivier Miakinen
Tu devrais surtout savoir quel charset est utilisé
- par ton terminal de commandes
ben UTF-8
Post by Olivier Miakinen
- dans tes scripts PHP
UTF-8
Ok, parfait.
Post by Une Bévue
Post by Olivier Miakinen
- dans le fichier lui-même
[...]
<http://www.cjoint.com/doc/16_12/FLqh3QQgoTX_20161202-085945-TEST.jpg>
C'est codé C2 AE, soit le ® en UTF-8.
Post by Une Bévue
<http://www.cjoint.com/c/FLqh6XNTJZX>
<http://www.cjoint.com/doc/16_12/FLqh6XNTJZX_20161202-085945.jpg>
C'est codé A8, soit le ® en MacRoman.

Cf. <http://www.miakinen.net/vrac/charsets/?hv=h&o6=MacRoman&or=6&pr=168>.

Essaye :
-charset exif=MacRoman
-charset iptc=MacRoman
-charset id3=MacRoman
-charset photoshop=MacRoman
-charset quicktime=MacRoman
--
Olivier Miakinen
Une Bévue
2016-12-16 10:12:36 UTC
Permalink
Post by Olivier Miakinen
Post by Une Bévue
<http://www.cjoint.com/doc/16_12/FLqh3QQgoTX_20161202-085945-TEST.jpg>
C'est codé C2 AE, soit le ® en UTF-8.
rien de + "normal"
Post by Olivier Miakinen
Post by Une Bévue
<http://www.cjoint.com/c/FLqh6XNTJZX>
<http://www.cjoint.com/doc/16_12/FLqh6XNTJZX_20161202-085945.jpg>
C'est codé A8, soit le ® en MacRoman.
bon, d'accord.
Post by Olivier Miakinen
Cf. <http://www.miakinen.net/vrac/charsets/?hv=h&o6=MacRoman&or=6&pr=168>.
-charset exif=MacRoman
-charset iptc=MacRoman
-charset id3=MacRoman
-charset photoshop=MacRoman
-charset quicktime=MacRoman
toujours :
Comment : File written by Adobe Photoshop� 5.0
Olivier Miakinen
2016-12-16 10:18:35 UTC
Permalink
Post by Une Bévue
Post by Olivier Miakinen
-charset exif=MacRoman
-charset iptc=MacRoman
-charset id3=MacRoman
-charset photoshop=MacRoman
-charset quicktime=MacRoman
Comment : File written by Adobe Photoshop� 5.0
Et :
-charset 20161202_085945.jpg=MacRoman
?
--
Olivier Miakinen
Olivier Miakinen
2016-12-16 10:24:04 UTC
Permalink
Post by Olivier Miakinen
-charset 20161202_085945.jpg=MacRoman
?
Ah, je crois que c'est sans espoir.

<cit. http://www.sno.phy.queensu.ca/~phil/exiftool/faq.html#Q10>
JPEG Comment: The encoding for the JPEG Comment (COM segment) is not
specified, so ExifTool reads/writes this text without conversion.
</cit.>

À moins que peut-être :
-charset JPEG=MacRoman
ou :
-charset COM=MacRoman
?
--
Olivier Miakinen
Une Bévue
2016-12-16 10:48:15 UTC
Permalink
Post by Olivier Miakinen
Ah, je crois que c'est sans espoir.
me 2...
Post by Olivier Miakinen
<cit. http://www.sno.phy.queensu.ca/~phil/exiftool/faq.html#Q10>
JPEG Comment: The encoding for the JPEG Comment (COM segment) is not
specified, so ExifTool reads/writes this text without conversion.
</cit.>
bon !
Post by Olivier Miakinen
-charset JPEG=MacRoman
-charset COM=MacRoman
que dalle !

arrêtons d'user le soleil !

Une Bévue
2016-12-16 10:45:47 UTC
Permalink
Post by Olivier Miakinen
-charset 20161202_085945.jpg=MacRoman
?
ça me donne le man d'exifttol ))
Loading...