Date de prise de vue via EXIF en PHP

Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   -  
Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   -
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

8 réponses

  1. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     
    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
    0
  2. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     
    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) ?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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.
      0
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     
    "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 ...
    0
  5. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     
    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 ?
    0
  6. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     
    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 !
    0
  7. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     
    Je n'ai rien changé depuis mon dernier message, ça fonctionne à nouveau !?!
    0