Existe um programa gratuito para (lote) alterar a data do arquivo de foto para corresponder ao EXIF?


39

Desejo especificar um diretório e fazer com que o software encontre todas as fotos no diretório e seus subdiretórios, e se eles contiverem data / hora EXIF, ele definirá o carimbo de data e hora do sistema de arquivos para corresponder ao EXIF.


É claro que hoje em dia eu faria essa pergunta sobre as recomendações de software - embora tenham ótimas respostas aqui
Mawg

Respostas:


46

É o inverso de Existe algum software que defina as datas EXIF ​​com base na data de modificação do arquivo? , e tenho certeza de que todos os programas listados serão aplicáveis.

jhead

Destes, para esta tarefa muito simples, jhead é minha sugestão. Por exemplo, o comando

jhead -ft *.jpg

define vários arquivos para que o registro de data e hora do arquivo corresponda a EXIF.

jhead com find, para passar por subdiretórios

Para executar a recursão em subdiretórios, você pode combiná-lo com o findcomando disponível no Linux / Unix / Mac (ou Cygwin for Windows):

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

Ou para encontrar algum de *.JPG *.JPEG *.jpg *.jpeg ...vocês também pode tentar

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

Você também pode usar o find para mostrar apenas todos os arquivos que seriam ... encontrados, sem executar nenhum outro comando (como o jhead):

find -iname '*.jp*g'

Outras ferramentas

Outros utilitários como o ExifTool ou o Exiv2 são muito mais capazes, mas ao preço da complexidade. Nunca me lembro de imediato das opções corretas para fazer algo com elas e tenho que examinar a documentação todas as vezes, mas jhead -fté fácil lembrar com o "tempo fixo" mnemônico.

ExifTool

Apenas para completar, no entanto, I fez olhada na documentação e com ExifTool , faça o seguinte:

exiftool -r '-DateTimeOriginal>FileModifyDate' directoryname

(Remova a opção -rse você não quiser recursão e, se fizer isso, também poderá fornecer uma lista de arquivos ou um curinga em vez de directoryname.) E tome cuidado com essas aspas - se você estiver executando isso no Windows, deseja "em vez de '.

Exiv2

Com Exiv2 :

exiv2 -T rename *.jpg

Lembre-se de que, com letras minúsculas -t(ou sem nenhuma -T), o Exiv2 também renomeia o arquivo para um novo nome com base no carimbo de data / hora, o que pode ser muito confuso. Exiv2 também não faz recursão.


2
Você está certo, este é o oposto, mas infinitamente mais útil :)
Itai

O jhead é muito útil para isso - E para muitas outras manipulações de arquivos jpg. Tenha cuidado ao usá-lo - é uma ferramenta extremamente poderosa que pode causar uma certa quantidade de estragos se mal utilizada. Eu recomendo usá-lo em um arquivo em lotes para que você sempre faça o que pretende e teste o resultado em um arquivo de teste definido primeiro.
Russell McMahon

+1 mas eu me concedido a resposta ;-) Só para outros no futuro pode encontrar uma maneira de fazer exatamente o que eu pedi ...
MAWG

@olibre Sim, isso funcionará no Linux / Unix ou Mac.
mattdm

Notei que alguns navegadores de imagens apresentam imagens (diaporama) apenas na ordem do nome do arquivo (não na hora da modificação do arquivo). Finalmente, uso o carimbo de data / hora EXIF ​​para definir a hora do arquivo E como prefixo do nome do arquivo. Eu uso comando find -name '[0-9][0-9]*' -o -iname '*.jp*g' -type f -exec jhead -ft -n%Y%m%d_%H%M%S_%f {} +. Explicações: -name '[0-9][0-9]*'para evitar renomear novamente os arquivos que já possuem um prefixo de data ( '[0-9][0-9]para levar em consideração anos e meses). -iname '*.jp*g'pode ser ignorado porque jheadapenas processa arquivos suportados (somente arquivos JPEG). %fpara manter o nome do arquivo original.
Olibre

12

Irfanview e jhead farão o que você deseja.
Ambos grátis.
Links para ambos abaixo.
O jhead é direcionado pela linha de comando ou pode ser chamado por outros processos.
A versão do Irfanview pode ser chamada de uma linha de comando ou internamente em um lote ou em um arquivo por arquivo.

O exemplo abaixo para Irfanview mostra como copiar em qualquer direção:


Irfanview

Permite alterações na GUI ou na linha de comando do lote ou por transferência de data / hora do arquivo do EXIF ​​para a especificação do arquivo ou vice-versa (sem outras alterações de arquivo, se desejado).

Fonte: Grátis em www.irfanview.com

Isso é MUITO mais fácil e rápido na prática, depois de apenas alguns usos do que as instruções abaixo fazem aparecer. Por exemplo,
para converter a data / hora de um único arquivo em valores EXIF, é necessário
Shift-J, Alt-F, Enter.
Vendo por que o primeiro número de vezes leva mais tempo.

Para fazer isso em um lote de arquivos que o SOUNDS aprende -
requer: T, Ctrl-A, Alt-F, J, Enter, (Alt-F), Enter
(ou: T, Ctrl-A, Shift-J, Enter) (oferece menos opções)
MAS, na verdade, é quase totalmente intuitivo depois de um pouco de uso - os menus o guiam inicialmente até a formação do caminho do cérebro.

GUI, por arquivo

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

insira a descrição da imagem aqui

GUI, um ou muitos arquivos (via exibição em 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"

insira a descrição da imagem aqui

Na linha de comando - este é um "rodar" sem ação, exceto para copiar a data / hora do EXIF ​​para a data e hora do arquivo. O oposto também pode ser alcançado, se desejado. :

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

  • Para copiar data / hora na direção oposta (
    (especifica arquivos para EXIF), use como acima com (0,0,1,0,0,0,0,0)


jhead

fará qualquer coisa que você possa imaginar com arquivos jpeg

Fonte: Grátis em http://www.sentex.net/~mwandel/jhead/

Eu uso um arquivo em lotes como abaixo. Outras opções são possíveis:

  • jhead -ft % 1 .jpg

Eles dizem: Coisas que o jhead pode modificar em um arquivo jpeg exif

  • Imagens à direita, de acordo com a tag de rotação, usando jpegtran
    Defina ou ajuste relativo os carimbos de
    data / hora exif internos Corrija os desvios de data / hora em grandes lotes de imagens Renomeie os
    arquivos de carimbo de data ou data de acordo com o carimbo de data / hora
    exif Transferir cabeçalhos exif entre imagens
    Substituir miniaturas dentro de cabeçalhos Exif
    Editar jpeg comentários (mas não os comentários Exif)
    Exclua seções exif ou comentários das imagens jpeg
    Crie um novo cabeçalho exif mínimo contendo data e miniatura

_________________________

Nota: agosto de 2016: "Usuário anônimo" sugeriu corretamente que uma conversão sugerida não funcionava como eu disse. Eu adicionei extensivamente à área em questão.


Agosto de 2016: "Usuário anônimo" sugeriu corretamente que uma conversão sugerida não funcionava como eu disse. Eu adicionei extensivamente à área em questão.
Russell McMahon

E os arquivos brutos?
Michael C

@MichaelClark Estou feliz que você fez essa pergunta :-). Observo que todos parecem ter abordado arquivos JPG e não RAW. Eu imagino que você seria uma das pessoas mais propensas a perguntar como fazer isso com arquivos RAW :-).
Russell McMahon

4

Apenas mais uma ferramenta EXIF ​​da linha de comando que pode alterar a data da última modificação dos arquivos para coincidir com a hora da foto, com base na metada EXIF ​​no arquivo de imagem JPEG:

 exiv2 -T rename somedir/foo*.jpg

Não se preocupe, o argumento de comando renameestá ok e não faz mal.
Só que a ação de renomeação de arquivo foi usada incorretamente para criar apenas o efeito colateral da alteração do carimbo de data e hora.


2

Embora eu realmente não recomendo confiar na data / hora do arquivo quando se trata de suas imagens, você pode usar uma ferramenta gratuita chamada EXIF Date Changer para definir em lote as datas do arquivo de todas as suas imagens JPG. A configuração padrão definirá a data de criação e a data da modificação do arquivo para a foto tirada.

A razão pela qual eu não recomendo isso é que a data do arquivo é facilmente atualizada. Se você editar a imagem, a data da modificação será atualizada. Se você copiar a imagem, ela recebe uma nova data.

Uma solução muito melhor é renomear os arquivos para incluir a data / hora no próprio nome do arquivo. Isso ainda permite uma classificação fácil e funciona bem com imagens armazenadas em iPhones / dropbox.

EXIF Date Changer - Defina as datas do arquivo para a data da tomada



1

O FastStone Image Viewer pode fazer isso (versão 4.9 usada) - basta selecionar os arquivos no painel de miniaturas, clicar com o botão direito do mouse, selecionar "Ferramentas"> "Alterar carimbo de data / hora" - e usar os dados EXIF ​​(com ou sem modificações) ou usar wholy data / hora manual fixa personalizada.


Uau! Estou usando a ferramenta de captura de tela há anos e não encontrei nada melhor. Você pode obter a última versão gratuita aqui ; Não preciso de nenhum dos recursos pagos. Eu também usei o visualizador deles no passado, mas não sabia que poderia fazer isso.
Mawg 4/17/17

1

O Advance Renamer é o melhor software amigável, muito simples.

  1. Arraste e solte todas as fotos em AR (Advance Renamer)

  2. Clique em (canto superior esquerdo) Adicionar método -> Novo nome

  3. Clique em uma das imagens na parte inferior central e você verá um botão ExifTool que mostra todos os metadados, basta clicar em um atributo e você receberá a tag. Nesse caso, é<ExifTool:DateTimeOriginal>

  4. Copie isso e cole na caixa de texto Novo nome. Você pode adicionar qualquer coisa antes ou depois IMG_<ExifTool:DateTimeOriginal>, como DSC_<ExifTool:DateTimeOriginal>etc.

  5. Clique em Iniciar lote ( canto superior direito) Isso renomeará todos os seus arquivos com a data. Por exemplo, 2017_12_01 19_10_12 É sempre bom ter a data original no nome do arquivo, pois os atributos podem ser perdidos, mas os nomes dos arquivos não.

  6. Arraste novamente todos os arquivos renomeados para o AR
  7. Clique em Novo método -> Registro de Data e Hora
  8. Marque as 3 caixas de seleção Criar, Modificar, Acessado (Às vezes, acessado pode não funcionar, desmarque-o se isso acontecer)
  9. Selecione FileName Pattern e cole<Year>_<Month>_<Day> <Hour>_<Min>_<Sec>
  10. Iniciar lote.
  11. Voce é bom. Missão cumprida

0

Sugeri ao autor do PhotoRenamer, que respondeu ...

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

Eu adiciono um botão na guia 'Opções' da faixa de opções. A partir daí, você pode selecionar a opção para atualizar o status da hora do arquivo.

A propósito, para evitar o uso de máscara, também adiciono um novo atributo de máscara:% F. Se você usar essa máscara simples, o arquivo será renomeado ... com seu próprio nome ... Portanto, você não é obrigado a renomear o arquivo para o qual deseja atualizar os atributos de tempo do arquivo ...


0

Essa é uma pergunta antiga e parece que existem algumas sugestões que devem funcionar bem, mas a que cheguei para resolver um problema de pedido de arquivo após uma atualização do telefone Android foi essa.

  • Abra o Windows (pela primeira vez em idades)
  • Instale o ExtFS ou algo que possa ler partições ext4
  • Copie fotos para o disco rígido do Micro SD
  • Use o Attribute Changer ( https://www.petges.lu/home/ ) para definir datas criadas / modificadas para a data EXIF
  • Whack cartão de volta no telefone
  • Copie as fotos de volta ao telefone pelo MTP

Talvez isso seja útil para alguém.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.