Existe-t-il un programme gratuit pour modifier (par lots) la date du fichier photo afin qu'il corresponde à EXIF?

40

Je souhaite spécifier un répertoire et faire en sorte que le logiciel trouve toutes les photos du répertoire et de ses sous-répertoires. Si elles contiennent la date / heure EXIF, le timestamp de leur système de fichiers correspond à celui de EXIF.

Mawg
la source
Bien sûr, de nos jours, je voudrais poser cette question sur les recommandations de logiciels - elle a cependant obtenu d’excellentes réponses
Mawg, le

Réponses:

47

C’est l’inverse de Existe - t-il un logiciel permettant de définir les dates EXIF ​​en fonction de la date de modification du fichier? et je suis sûr que tous les programmes énumérés s’appliqueront.

tête

Parmi ceux-ci, pour cette tâche très simple, jhead est ma suggestion. Par exemple, la commande

jhead -ft *.jpg

définit un groupe de fichiers pour que l'horodatage du fichier corresponde à EXIF.

jhead avec find, pour parcourir les sous-répertoires

Pour effectuer la récursivité dans les sous-répertoires, vous pouvez le combiner avec la findcommande disponible sous Linux / Unix / Mac (ou Cygwin pour Windows):

find -name '*.jpg' -exec jhead -ft {} +

Ou pour trouver l'un de *.JPG *.JPEG *.jpg *.jpeg ...vous peut également essayer

find -iname '*.jp*g' -exec jhead -ft {} +

Vous pouvez également utiliser find pour afficher uniquement tous les fichiers qui seraient ... trouvés, sans exécuter aucune autre commande (comme jhead):

find -iname '*.jp*g'

Autres outils

D'autres utilitaires comme ExifTool ou Exiv2 sont beaucoup plus capables, mais au prix de la complexité. Je ne me souviens jamais des bonnes options pour faire quoi que ce soit avec elles et je dois regarder la documentation à chaque fois, mais il jhead -ftest facile de se rappeler avec la mnémonique "temps de réparation".

ExifTool

Juste pour être complet, bien que, je l'ai fait regarder la documentation, et avec ExifTool , faites ceci:

exiftool -r '-DateTimeOriginal>FileModifyDate' directoryname

(Supprimez la -rsi vous ne voulez pas de récursivité, et si vous faites cela, vous pouvez également donner une liste de fichiers ou un caractère générique à la place de directoryname.) Et soyez prudent avec ces guillemets - si vous utilisez ceci sous Windows, vous voulez "au lieu de '.

Exiv2

Avec Exiv2 :

exiv2 -T rename *.jpg

Attention, avec des minuscules -t(ou sans aucune -Tlettre) Exiv2 renommera également le fichier sous un nouveau nom basé sur l'horodatage, ce qui peut être très déroutant. Exiv2 ne fait pas non plus de récursivité.

mattdm
la source
2
Vous avez raison, c'est l'inverse mais infiniment plus utile :)
Itai
jhead est très utile pour cela - ET pour de nombreuses autres manipulations de fichiers jpg. Soyez prudent lorsque vous l'utilisez - c'est un outil extrêmement puissant qui peut causer un certain nombre de dégâts s'il est mal utilisé. Je recommande de l’utiliser dans un fichier de commandes afin de toujours faire ce que vous voulez, et de tester le résultat sur un fichier de test défini en premier.
Russell McMahon
+1 mais je me suis attribué la réponse ;-) Juste pour que d'autres à l'avenir puissent trouver un moyen de faire exactement ce que j'ai demandé ...
Mawg
@olibre Oui, cela fonctionnera sous Linux / Unix ou Mac.
Mattdm
J'ai remarqué que certains navigateurs d'images présentent (diaporama) des images uniquement par ordre de nom de fichier (et non par le moment de la modification du fichier). Enfin, j'utilise l’horodatage EXIF ​​pour définir l’heure du fichier ET pour préfixer le nom du fichier. J'utilise la commande find -name '[0-9][0-9]*' -o -iname '*.jp*g' -type f -exec jhead -ft -n%Y%m%d_%H%M%S_%f {} +. Explications: -name '[0-9][0-9]*'pour éviter de renommer à nouveau des fichiers ayant déjà un préfixe de date ( '[0-9][0-9]pour prendre en compte les années et les mois). -iname '*.jp*g'peut être ignoré, car jheadne traite que les fichiers pris en charge (uniquement les fichiers JPEG). %fconserver le nom de fichier d'origine.
olibre
12

Irfanview et Jhead feront tous les deux ce que vous voulez.
Les deux gratuits.
Liens vers les deux ci-dessous.
jhead est piloté par la ligne de commande ou peut être appelé par d'autres processus.
La version d'Irfanview peut être appelée à partir d'une ligne de commande ou de manière interne, par lots ou fichier par fichier.

L'exemple ci-dessous pour Irfanview montre comment copier dans un sens ou dans l'autre:


Irfanview

Autorise les modifications de ligne de commande ou de groupe de commandes par lot ou par fichier date / heure de transfert de EXIF ​​vers la spécification de fichier ou vice versa (sans autre modification de fichier si souhaité).

Source: gratuit sur www.irfanview.com

C’est BEAUCOUP plus facile et plus rapide en pratique, après quelques utilisations seulement, que les instructions ci-dessous donnent à voir. Par exemple,
pour convertir la date / heure d'un fichier unique en valeurs EXIF, il faut
Shift-J, Alt-F, Entrée.
Voir pourquoi les premières fois prend plus de temps.

Pour faire cela pour un lot de fichiers SONORITÉS complexes à apprendre -
Il nécessite: T, Ctrl-A, Alt-F, J, Entrée, (Alt-F), Entrée
(Ou: T, Ctrl-A, Maj-J, Entrez) (donne moins d’options)
MAIS en fait, il est presque totalement intuitif après une petite utilisation - les menus vous guident au départ jusqu’à ce que la voie du cerveau se forme.

GUI, par fichier

  Options, JPG lossless rotation  (Shift-J)
    Select "Apply original EXIF date/time to new file"
        Consider also selecting other options

entrez la description de l'image ici

GUI, un ou plusieurs fichiers (via la vue Miniature)

Open Thumbnails view ('File, Thumbnails' or 'T' from Window view
Select images to change EXIF data of 
    usually all in folder -> Ctrl-A
Then: File, 'JPG lossless operations'
    (1) Change EXIF date/time
      "Change EXIF date/time"
        Options are offered to set Date/time to specific setting
        or to move all times back/forwards by selected DHMS amount 
              calculator provided to check result is as desired.                 
     (2) Transfer EXIF date / time to file saved date time
          "Lossless rotation with selected files"  [Shift-J]
          then, as for single file version above
              Select "Apply original EXIF date/time to new file"

entrez la description de l'image ici

À partir de la ligne de commande - il s’agit d’une "rotation" avec AUCUNE action, sauf pour copier la date / heure d’EXIF dans la date et l’heure du fichier. Le contraire peut également être obtenu si vous le souhaitez. :

  • i_view32.exe file_spec \ *. jpg / jpg_rotate = (0,0,0,1,0,0,0,0)

  • Pour copier la date / heure dans le sens opposé ((filespec to EXIF),
    utilisez comme ci-dessus avec (0,0,1,0,0,0,0,0))


tête

fera à peu près tout ce que vous pouvez imaginer avec des fichiers JPEG

Source: Gratuit depuis http://www.sentex.net/~mwandel/jhead/

J'utilise un fichier de commandes comme ci-dessous. D'autres options sont possibles:

  • jhead -ft % 1 .jpg

Ils disent: Les choses jhead peuvent modifier dans un fichier JPEG exif

  • En haut à droite images selon étiquette de rotation à l' aide jpegtran
    Set ou d'un parent régler exif interne TimeStamps
    décalages de date / heure Fix dans les grands lots d'images
    Renommez ou fichiers timbre date selon exif horodatage
    Transfert exif - têtes entre les images
    Remplacer les vignettes dans Exif
    Modifier le jpeg commentaires (mais pas les commentaires Exif)
    Supprimez les sections exif ou comment des images jpeg
    Créez un nouvel en-tête exif minimal contenant la date et la vignette

_________________________

Note: Août 2016: "Utilisateur anonyme" a correctement suggéré qu'une conversion suggérée ne fonctionne pas comme je l'ai dit. J'ai beaucoup ajouté à la zone concernée.

Russell McMahon
la source
Août 2016: "Utilisateur anonyme" a correctement suggéré qu'une conversion suggérée ne fonctionne pas, comme je l'ai dit. J'ai énormément ajouté à la zone concernée.
Russell McMahon
Qu'en est-il des fichiers bruts?
Michael C
@ MichaelClark Je suis content que vous ayez posé cette question :-). Je remarque que nous semblons tous avoir traité les fichiers JPG et non les fichiers RAW. J'imagine que vous êtes l'une des personnes les plus susceptibles de demander comment procéder avec les fichiers RAW :-).
Russell McMahon
4

Juste un autre outil EXIF ​​en ligne de commande qui peut modifier la date de dernière modification des fichiers en fonction du moment de la prise de vue, en fonction du métada EXIF ​​dans le fichier image JPEG:

 exiv2 -T rename somedir/foo*.jpg

Pas d'inquiétude, l'argument de commande renameest correct et ne nuit pas.
C'est simplement que l'action de renommer le fichier est utilisée à mauvais escient pour créer uniquement l'effet secondaire de la modification de l'horodatage.

Volker Siegel
la source
2

Bien que je ne recommande vraiment pas de vous fier à la date / heure du fichier pour vos images, vous pouvez utiliser un outil gratuit appelé EXIF Date Changer pour définir par lots les dates de fichier de toutes vos images JPG. Le paramètre par défaut définit à la fois la date de création et la date de modification du fichier sur la photo prise.

La raison pour laquelle je ne recommande pas cela est que la date du fichier est facilement mise à jour. Si vous modifiez l'image, la date modifiée est mise à jour. Si vous copiez l'image, elle prend une nouvelle date.

Une solution bien meilleure consiste à renommer les fichiers pour inclure la date / heure dans le nom du fichier lui-même. Cela permet toujours un tri facile et fonctionne bien avec les images stockées sur iPhone / Dropbox.

EXIF Date Changer - Fixer les dates des fichiers à la date prise

Greg
la source
2

Découvrez mon nouveau logiciel gratuit "Photo Date Organizer": http://photodateorganizer.sourceforge.net/

entrez la description de l'image ici

killdaclick
la source
1
De la page SourceForge: "Présenté par: killdaclick". La publicité pour vos propres produits n'est pas interdite ici, mais vous devez préciser votre affiliation.
Philip Kendall
@PhilipKendall done :)
killdaclick
2

FastStone Image Viewer peut le faire (version 4.9 utilisée) - il suffit de sélectionner les fichiers dans le volet des miniatures, de cliquer-droit dessus, de sélectionner "Outils"> "Modifier l’horodatage". Vous pouvez ensuite utiliser les données EXIF ​​(avec ou sans coutume fixe date / heure manuelle.

Kozuch
la source
Hou la la! Je ne le savais pas. J'utilise leur outil de capture d'écran depuis des années et je n'ai rien trouvé de mieux. Vous pouvez obtenir la dernière version gratuite ici ; Je n'ai besoin d'aucune des fonctionnalités payantes. J'ai également utilisé leur spectateur dans le passé, mais je ne savais pas qu'il pouvait le faire.
Mawg
1

Advance Renamer est le meilleur logiciel convivial qui soit très simple.

  1. Faites glisser et déposez toutes les photos sur AR (Advance Renamer)

  2. Cliquez sur (en haut à gauche) Ajouter une méthode -> Nouveau nom

  3. Cliquez sur l'une des images en bas au centre, vous verrez un bouton ExifTool qui affiche toutes les métadonnées. Cliquez simplement sur un attribut et vous obtiendrez la balise. Dans ce cas, il s'agit<ExifTool:DateTimeOriginal>

  4. Copiez ceci et collez-le dans la zone de texte Nouveau nom. Vous pouvez ajouter n'importe quoi avant ou après comme IMG_<ExifTool:DateTimeOriginal>, DSC_<ExifTool:DateTimeOriginal>etc.

  5. Cliquez sur Démarrer le lot (en haut à droite). Cela renomera tous vos fichiers avec la date. Par exemple, 2017_12_01 19_10_12 Il est toujours bon de conserver la date d'origine dans le nom du fichier car les attributs risquent d'être perdus, mais les noms de fichiers ne le seront pas.

  6. Faites à nouveau glisser tous les fichiers renommés sur AR.
  7. Cliquez sur Nouvelle méthode -> Horodatage
  8. Cocher toutes les 3 cases à cocher Créer, Modifier, Accéder (L'accès peut parfois ne pas fonctionner, il suffit de le décocher si cela se produit)
  9. Sélectionnez FileName Pattern et collez<Year>_<Month>_<Day> <Hour>_<Min>_<Sec>
  10. Démarrer le lot.
  11. Vous êtes doué. Mission accomplie
Shalem Raj
la source
0

Je l'ai suggéré à l'auteur de PhotoRenamer, qui a répondu ...

PhotoRenamer 3.2 http://www.tgmdev.be/applications/photorenamer/photorenamer.php

J'ajoute un bouton dans l'onglet "Options" du ruban. À partir de là, vous pouvez sélectionner l'option permettant de mettre à jour le statut de l'heure du fichier.

Par ailleurs, pour éviter l'utilisation de masque, j'ajoute également un nouvel attribut de masque:% F. Si vous utilisez ce masque simple, le fichier est renommé ... avec son propre nom ... Vous n'êtes donc pas obligé de renommer le fichier pour lequel vous souhaitez mettre à jour les attributs de temps du fichier ...

Mawg
la source
0

C’est une vieille question et il semble y avoir quelques suggestions qui devraient bien fonctionner, mais celle à laquelle je suis arrivé pour régler un problème de classement de fichiers après une mise à niveau d’un téléphone Android était la suivante.

  • Manivelle ouverte Windows (pour la première fois depuis longtemps)
  • Installez ExtFS ou quelque chose qui peut lire les partitions ext4
  • Copier des photos sur le disque dur à partir de Micro SD
  • Utilisez Attribute Changer ( https://www.petges.lu/home/ ) pour définir les dates créées / modifiées sur la date EXIF.
  • Remettez la carte dans le téléphone
  • Copier les photos sur votre téléphone via MTP

Peut-être que cela sera utile à quelqu'un.

triff
la source
-2

L’autre programme gratuit est Google Picasa. Vous pouvez facilement modifier par lots la date et l’heure de toutes les photos:

entrez la description de l'image ici

entrez la description de l'image ici

Bel article à ce sujet: Comment modifier la date d'une photo dans Picasa en indiquant le moment où la photo a été prise

Vladislav
la source
2
Comment fonctionne cette solution? L'OP veut changer la date du fichier pour qu'elle corresponde à la date EXIF . Ce n'est probablement pas ce que fait Picasa.
Olivier