Esiste un programma gratuito per modificare (in batch) la data del file di foto in modo che corrisponda a EXIF?


40

Voglio specificare una directory e fare in modo che il software trovi tutte le foto nella directory e nelle sue sottodirectory, e se contengono la data / ora EXIF, imposta il timestamp del loro filesystem in modo che corrisponda a EXIF.


Certo, oggi vorrei porre questa domanda sui consigli del software - qui ho avuto delle ottime risposte
Mawg

Risposte:


47

Questo è l'inverso di Esiste un software che imposterà le date EXIF ​​in base alla data di modifica del file? e sono sicuro che verranno applicati tutti i programmi elencati.

jhead

Di questi, per questo compito molto semplice, jhead è il mio suggerimento. Ad esempio, il comando

jhead -ft *.jpg

imposta un gruppo di file in modo che il timestamp del file corrisponda a EXIF.

jhead with find, per passare attraverso le sottodirectory

Per eseguire la ricorsione in sottodirectory, è possibile combinarlo con il findcomando disponibile su Linux / Unix / Mac (o Cygwin per Windows):

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

O per trovare qualcuno di *.JPG *.JPEG *.jpg *.jpeg ...voi può anche provare

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

Puoi anche usare find per mostrare solo tutti i file che sarebbero ... trovati, senza eseguire nessun altro comando (come jhead):

find -iname '*.jp*g'

Altri strumenti

Altre utility come ExifTool o Exiv2 sono molto più capaci, ma al prezzo della complessità. Non riesco mai a ricordare a mano libera le opzioni giuste per fare qualsiasi cosa con quelle e devo sempre guardare la documentazione, ma jhead -ftè facile da ricordare con il "tempo fisso" mnemonico.

ExifTool

Solo per completezza, però, ho fatto un'occhiata alla documentazione, e con ExifTool , fare questo:

exiftool -r '-DateTimeOriginal>FileModifyDate' directoryname

(Rimuovi -rse non vuoi ricorsione, e se lo fai, puoi anche dare un elenco di file o un carattere jolly invece di directoryname.) E fai attenzione con quelle citazioni - se lo stai eseguendo su Windows, vuoi "invece di '.

exiv2

Con Exiv2 :

exiv2 -T rename *.jpg

Fai attenzione che Exiv2 con -tlettere minuscole (o senza -T) rinominerà anche il file con un nuovo nome basato sul timestamp, che potrebbe essere molto confuso. Exiv2 inoltre non esegue la ricorsione.


2
Hai ragione, è l'opposto ma infinitamente più utile :)
Itai

jhead è molto utile per questo - E per molte altre manipolazioni di file jpg. Fai attenzione quando lo usi: è uno strumento estremamente potente che può causare un certo disastro se usato in modo improprio. Ti consiglio di usarlo in un file batch in modo da fare sempre ciò che intendi e testare prima il risultato su un file di test.
Russell McMahon,

+1 ma mi sono aggiudicato la risposta ;-) Solo così altri in futuro possono trovare un modo per fare esattamente quello che ho chiesto ...
Mawg

@olibre Sì, funzionerà su Linux / Unix o Mac.
Mattdm,

Ho notato che alcune immagini presenti nei browser (diaporama) sono solo nell'ordine dei nomi dei file (non nel tempo di modifica dei file). Finalmente uso il timestamp EXIF ​​per impostare l'ora del file E per aggiungere il prefisso al nome del file. Io uso il comando find -name '[0-9][0-9]*' -o -iname '*.jp*g' -type f -exec jhead -ft -n%Y%m%d_%H%M%S_%f {} +. Spiegazioni: -name '[0-9][0-9]*'per evitare di rinominare nuovamente i file che hanno già un prefisso di data ( '[0-9][0-9]per tenere conto di anni e mesi). -iname '*.jp*g'può essere ignorato perché jheadelabora solo i file supportati (solo file JPEG). %fper mantenere il nome file originale.
olibre

12

Irfanview e jhead faranno entrambi quello che vuoi.
Entrambi gratuiti.
Collegamenti ad entrambi di seguito.
jhead è guidato dalla riga di comando o può essere chiamato da altri processi.
La versione di Irfanview può essere invocata da una riga di comando o internamente in un batch o su un file per file.

L'esempio seguente per Irfanview mostra come copiare in entrambe le direzioni:


Irfanview

Consente modifiche alla GUI o alla riga di comando del trasferimento batch / data / ora da file EXIF ​​a specifiche file o viceversa (senza altre modifiche al file, se desiderato).

Fonte: gratuito da www.irfanview.com

Questo è MOLTO più semplice e veloce in pratica dopo pochi utilizzi rispetto alle istruzioni seguenti. ad es.
per convertire la data / ora di un singolo file in valori EXIF ​​è necessario
Maiusc-J, Alt-F, Invio.
Vedendo perché la prima volta impiega più tempo.

Per fare questo per un batch di file SUONI complessi da imparare -
Richiede: T, Ctrl-A, Alt-F, J, Invio, (Alt-F), Invio
(oppure: T, Ctrl-A, Maiusc-J, Invio) (offre meno opzioni)
MA in effetti è quasi del tutto intuitivo dopo un po 'di utilizzo - i menu ti guidano inizialmente fino a quando non si forma il percorso cerebrale.

GUI, per file

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

inserisci qui la descrizione dell'immagine

GUI, uno o più file (tramite visualizzazione Miniatura)

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"

inserisci qui la descrizione dell'immagine

Dalla riga di comando : si tratta di una "rotazione" senza azione tranne che per copiare la data / ora da EXIF ​​alla data e ora del file. Se lo si desidera, si può anche ottenere il contrario. :

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

  • Per copiare data / ora nella direzione opposta ((da filespec a EXIF)
    usare come sopra con (0,0,1,0,0,0,0,0)


jhead

farà quasi tutto ciò che puoi immaginare con i file jpeg

Fonte: gratuito da http://www.sentex.net/~mwandel/jhead/

Uso un file batch come di seguito. Altre opzioni sono possibili:

  • jhead -ft % 1 .jpg

Dicono: cose che jhead può modificare in un file jpeg exif

  • Immagini in alto a destra in base al tag di rotazione usando jpegtran
    Imposta o regola i timestamp interni exif fissi
    Correggi gli offset di data / ora in grandi lotti di immagini
    Rinomina o timbra i file in base al timestamp
    exif Trasferisci le intestazioni exif tra le immagini
    Sostituisci le miniature all'interno delle intestazioni Exif
    Modifica jpeg commenti (ma non i commenti Exif)
    Elimina sezioni exif o commenti dalle immagini jpeg
    Crea nuova intestazione exif minima contenente data e miniatura

_________________________

Nota: agosto 2016: "Utente anonimo" ha suggerito correttamente che una conversione suggerita non ha funzionato come ho detto. Ho ampiamente ampliato l'area interessata.


Agosto 2016: "Utente anonimo" ha suggerito correttamente che una conversione suggerita non ha funzionato come ho detto. Ho ampiamente ampliato l'area interessata.
Russell McMahon,

E i file grezzi?
Michael C,

@MichaelClark Sono contento che tu abbia posto questa domanda :-). Noto che sembra che tutti noi abbiamo affrontato i file JPG e non RAW. Immagino che saresti una delle persone più propense a chiederti come fare con i file RAW :-).
Russell McMahon,

4

Solo un altro strumento EXIF ​​a riga di comando che può modificare l'ultima data modificata dei file in modo che corrisponda al tempo di scattare la foto, in base alla metada EXIF ​​nel file di immagine JPEG:

 exiv2 -T rename somedir/foo*.jpg

Nessun problema, l'argomento comando renameè ok lì e non fa male.
È solo che l'azione di ridenominazione del file viene utilizzata in modo improprio per creare solo l'effetto collaterale della modifica del timestamp.


2

Anche se non consiglio davvero di fare affidamento sulla data / ora del file quando si tratta delle tue immagini, puoi usare uno strumento gratuito chiamato EXIF Date Changer per impostare in batch le date dei file di tutte le tue immagini JPG. L'impostazione predefinita imposta la data di creazione e la data di modifica del file sulla foto scattata.

Il motivo per cui non lo consiglio è che la data del file è facilmente aggiornabile. Se modifichi l'immagine, la data modificata viene aggiornata. Se copi l'immagine, ottiene una nuova data.

Una soluzione molto migliore consiste nel rinominare i file per includere la data / ora nel nome file stesso. Ciò consente ancora un facile ordinamento e funziona bene con le immagini archiviate su iPhone / dropbox.

EXIF Date Changer - Imposta le date dei file alla data di acquisizione



2

FastStone Image Viewer può eseguire questa operazione (utilizzata la versione 4.9): basta selezionare i file nel riquadro delle miniature, fare clic con il pulsante destro del mouse, selezionare "Strumenti"> "Cambia timestamp" - quindi è possibile utilizzare i dati EXIF ​​(con o senza modifiche) o utilizzare wholy data / ora manuale fissa personalizzata.


Wow! Non lo sapevo, ho usato il loro strumento di acquisizione dello schermo per anni e non ho trovato niente di meglio. Puoi ottenere l'ultima versione gratuita qui ; Non ho bisogno di nessuna delle funzionalità di pagamento. Ho usato anche il loro visualizzatore in passato, ma non sapevo che potesse farlo.
Mawg,

1

Advance Renamer è il miglior software intuitivo che è molto semplice.

  1. Trascina e rilascia tutte le foto su AR (Advance Renamer)

  2. Fare clic su (in alto a sinistra) Aggiungi metodo -> Nuovo nome

  3. Fai clic su una delle immagini in basso al centro e vedrai un pulsante ExifTool che mostra tutti i metadati basta fare clic su un attributo e otterrai il tag In questo caso è<ExifTool:DateTimeOriginal>

  4. Copialo e incollalo nella casella di testo Nuovo nome Puoi aggiungere qualsiasi cosa, prima o dopo IMG_<ExifTool:DateTimeOriginal>, DSC_<ExifTool:DateTimeOriginal>ecc.

  5. Fai clic su Avvia batch (in alto a destra). Questo rinominerà tutti i tuoi file con la data Ad es. 2017_12_01 19_10_12 È sempre bene avere la data originale nel nome del file perché gli attributi potrebbero andare persi ma i nomi dei file no.

  6. Trascina nuovamente tutti i file rinominati su AR
  7. Fai clic su Nuovo metodo -> Timestamp
  8. Seleziona tutte e 3 le caselle di controllo Crea, Modifica, Accesso (A volte l'accesso potrebbe non funzionare, deselezionalo se si verifica)
  9. Seleziona Pattern FileName e incolla<Year>_<Month>_<Day> <Hour>_<Min>_<Sec>
  10. Avvia batch.
  11. Sei bravo. Missione compiuta

0

L'ho suggerito all'autore di PhotoRenamer, che ha risposto ...

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

Aggiungo un pulsante nella scheda "Opzioni" della barra multifunzione. Da lì, è possibile selezionare l'opzione per l'aggiornamento dello stato temporale del file del file.

A proposito, per evitare l'uso della maschera, aggiungo anche un nuovo attributo maschera:% F. Se usi questa semplice maschera, il file viene rinominato ... con il suo nome ... Quindi non sei obbligato a rinominare il file per il quale desideri aggiornare gli attributi di tempo del file ...


0

Questa è una vecchia domanda e sembra che ci siano alcuni suggerimenti che dovrebbero funzionare bene, ma quello a cui sono arrivato per ordinare un problema di ordinazione dei file dopo un aggiornamento del telefono Android è stato questo.

  • Apri Windows (per la prima volta da anni)
  • Installa ExtFS o qualcosa in grado di leggere le partizioni ext4
  • Copia le foto sul disco rigido da Micro SD
  • Utilizzare il cambia attributi ( https://www.petges.lu/home/ ) per impostare le date create / modificate sulla data EXIF
  • Whack card di nuovo nel telefono
  • Copia le foto sul telefono tramite MTP

Forse questo sarà utile a qualcuno.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.