Menu

Date de prise de vue via EXIF en PHP

Messages postés
467
Date d'inscription
mercredi 4 août 2010
Dernière intervention
8 mars 2019
-
Bonjour,
Pour afficher un album photo je vais chercher la date de prise de vue dans les données EXIF des fichiers .jpg et je trie les photos selon cette date.
J'utilise le code suivant
$exif_data = exif_read_data($file,0,true);
$Date=$exif_data['EXIF']['DateTimeDigitized'];

Ceci fonctionnait très bien mais je viens de m'apercevoir que ça ne fonctionne plus, plus exactement pour certaines photos j'obtiens bien la date (par exemple "2018:09:13 12:25:52", pour d'autres je n'obtiens rien du tout alors que dans l'explorateur Windows (volet des détails) je vois bien la date de prise de vue des deux.

Y a-t-il une différence à ce niveau entre les 2 versions de PHP ?
Merci d'avance
Afficher la suite 

Votre réponse

8 réponses

Messages postés
7560
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 mars 2019
450
0
Merci
bonjour, peux-tu en dire plus à propos de ces deux versions?
tu peux aussi déterminer tous les attributes exif d'une image avec la méthode décrite en http://php.net/manual/fr/function.exif-read-data.php
Commenter la réponse de yg_be
Messages postés
467
Date d'inscription
mercredi 4 août 2010
Dernière intervention
8 mars 2019
0
Merci
C'est justement ce que je cherche, quelle est la différence entre ces 2 versions.

Si je liste tous les tags comme ans l'exemple que tu donnes (voir ci-dessous)
l'image 088 me donne bien la date de prise de vue, pas l'image 087 : pourquoi ?
alors que l'explorateur Windows me donne bien la date de prise de vue pour les deux
qu'avant (avant le passage à PHP 7.2 ?) ça fonctionnait bien
et que les 2 photos ont été prises à quelques minutes d'intervalle avec le même appareil photo

087.jpg
FILE.FileName: Temp.jpeg
FILE.FileDateTime: 1551612118
FILE.FileSize: 207641
FILE.FileType: 2
FILE.MimeType: image/jpeg
FILE.SectionsFound: ANY_TAG, IFD0
COMPUTED.html: width="1200" height="800"
COMPUTED.Height: 800
COMPUTED.Width: 1200
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 0
IFD0.ImageWidth: 1600
IFD0.ImageLength: 1067
IFD0.XResolution: 72/1
IFD0.YResolution: 72/1
IFD0.ResolutionUnit: 2
IFD0.Orientation: 1

088.jpg
FILE.FileName: Temp.jpeg
FILE.FileDateTime: 1551612118
FILE.FileSize: 173968
FILE.FileType: 2
FILE.MimeType: image/jpeg
FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROP
COMPUTED.html: width="1200" height="800"
COMPUTED.Height: 800
COMPUTED.Width: 1200
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 1
COMPUTED.ApertureFNumber: f/4.8
COMPUTED.Thumbnail.FileType: 2
COMPUTED.Thumbnail.MimeType: image/jpeg
IFD0.ImageDescription: Exif JPEG
IFD0.Make: Camera
IFD0.Model: DC-4300
IFD0.Orientation: 1
IFD0.XResolution: 72/1
IFD0.YResolution: 72/1
IFD0.ResolutionUnit: 2
IFD0.Software: DC-4300
IFD0.DateTime: 2003:01:03 06:42:01
IFD0.YCbCrPositioning: 2
IFD0.Exif_IFD_Pointer: 2306
IFD0.UndefinedTag:0xEA1C: ê
THUMBNAIL.Compression: 6
THUMBNAIL.XResolution: 72/1
THUMBNAIL.YResolution: 72/1
THUMBNAIL.ResolutionUnit: 2
THUMBNAIL.JPEGInterchangeFormat: 4876
THUMBNAIL.JPEGInterchangeFormatLength: 6461
THUMBNAIL.YCbCrPositioning: 2
EXIF.ExposureTime: 1/105
EXIF.FNumber: 48/10
EXIF.ExposureProgram: 2
EXIF.ISOSpeedRatings: 100
EXIF.ExifVersion: 0210
EXIF.DateTimeOriginal: 2011:08:14 09:37:54
EXIF.DateTimeDigitized: 2011:08:14 09:37:54
EXIF.ComponentsConfiguration: 
EXIF.ShutterSpeedValue: 67/10
EXIF.ApertureValue: 46/10
EXIF.ExposureBiasValue: 0/10
EXIF.MaxApertureValue: 31/10
EXIF.MeteringMode: 5
EXIF.LightSource: 0
EXIF.Flash: 0
EXIF.SubSecTimeOriginal: 45
EXIF.SubSecTimeDigitized: 45
EXIF.FlashPixVersion: 0100
EXIF.ColorSpace: 1
EXIF.ExifImageWidth: 1200
EXIF.ExifImageLength: 800
EXIF.InteroperabilityOffset: 4748
EXIF.FileSource: 
EXIF.UndefinedTag:0xEA1C: ê
INTEROP.InterOperabilityVersion: 0100
Commenter la réponse de Herve_be
Messages postés
24962
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 mars 2019
1898
Commenter la réponse de jordane45
Messages postés
467
Date d'inscription
mercredi 4 août 2010
Dernière intervention
8 mars 2019
0
Merci
Et que fait-on dans ce cas là ?
Pourquoi peut-il lire l'Exif de certaines photos et pas d'autres (où est la différence) ?
yg_be
Messages postés
7560
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 mars 2019
450 -
c'est un problème php, tu peux peut-être retourner à la version qui fonctionnait, ou bien passer à la version 7.2.3 ou supérieure.
Commenter la réponse de Herve_be
Messages postés
467
Date d'inscription
mercredi 4 août 2010
Dernière intervention
8 mars 2019
0
Merci
"Avant" avec la version 5.x je n'avais pas de problème, mon provider m'a obligé de passer à 7.
Maintenant je n'ai le choix qu'entre 7.1, 7.2 et 7.3; je viens de passer en 7.3 (au lieu de 7.2) : idem.

Ce qui est surprenant c'est que ça fonctionne pour certaines photos et pas pour d'autres.
Si je savais pourquoi je pourrais peut-être corriger les photos pour lesquelles ça ne fonctionne pas ...
Commenter la réponse de Herve_be
Messages postés
467
Date d'inscription
mercredi 4 août 2010
Dernière intervention
8 mars 2019
0
Merci
J'ai ouvert chaque photo "défectueuse" avec un logiciel de retouche d'image et re-sauvée sans la modifier : ça fonctionne.
Il y a donc peut-être un bug dans PHP 7 mais qui se produit pas pour toutes les photos !

J'ai un autre album qui pose le même problème mais il contient 525 photos : trop fastidieux de les ouvrir une à une; une astuce pour faire la même chose automatiquement ?
Commenter la réponse de Herve_be
Messages postés
467
Date d'inscription
mercredi 4 août 2010
Dernière intervention
8 mars 2019
0
Merci
Pour l'autre album (celui de 525 photos) j'ai beau les ouvrir et les re-sauver une à une,
$exif_data['EXIF']['DateTimeDigitized'] est toujours vide !
Commenter la réponse de Herve_be
Messages postés
467
Date d'inscription
mercredi 4 août 2010
Dernière intervention
8 mars 2019
0
Merci
Je n'ai rien changé depuis mon dernier message, ça fonctionne à nouveau !?!
Commenter la réponse de Herve_be