Takeout JSON
PT

Como corrigir a data dos arquivos de fotos no Android com adb

Ajuste a data do arquivo de fotos em um celular Android pelo computador, com adb e touch, para a galeria colocar prints, imagens de conversas e fotos copiadas de volta no dia certo.

Para corrigir a data do arquivo de uma foto no Android, conecte o celular com a depuração USB ligada e rode adb shell touch -m -d "2019-07-14 11:05:00" "/sdcard/DCIM/Camera/photo.jpg". Depois peça para a galeria olhar de novo com adb shell content call --uri content://media/ --method scan_volume --arg external_primary. A galeria usa a data do arquivo para toda foto sem data da captura dentro dela, então isso coloca essas fotos de volta no dia real.

Quando esta é a correção certa

A galeria ordena pela data da captura gravada dentro da foto. Só quando não existe essa data ela usa a data do arquivo. Então isto importa para:

  • prints e gravações de tela
  • imagens do WhatsApp, Telegram e outras conversas
  • fotos copiadas para o celular por "Transferência de arquivos", que ganharam a data de hoje como data do arquivo
  • fotos restauradas de um app de backup que não manteve as datas

Se a foto tem uma data da captura errada dentro dela, mudar a data do arquivo não ajuda. Mude a data da captura: como mudar a data de uma foto no Android.

O que você precisa

Veja as datas primeiro

adb shell stat -c '%y %n' "/sdcard/DCIM/Screenshots/*"

Cada linha mostra a data do arquivo e o nome. Uma pasta em que todos os arquivos têm o mesmo dia, o dia em que você copiou, é a que precisa de correção.

Ajuste a data de um arquivo

adb shell touch -c -m -d "2019-07-14 11:05:00" "/sdcard/DCIM/Screenshots/Screenshot_20190714-110500.png"

O -m define a data de modificação, que é a que a galeria lê. O -c garante que o touch nunca crie um arquivo vazio quando o nome estiver digitado errado. Sem o -c, um erro de digitação deixa para trás um arquivo de zero bytes.

A hora é lida no fuso horário do celular. Se preferir ser exato, use os segundos desde 1970: -d @1563095100.

Muitos arquivos: tire a data do nome

A maioria dos celulares e apps de conversa coloca a data no nome do arquivo: Screenshot_20190714-110500.png, IMG-20220925-WA0018.jpg, IMG_20220104_184121.jpg. Um script curto no computador transforma esses nomes em datas e escreve uma linha de touch por arquivo em um script, que o celular roda de uma vez:

adb push dates.sh /data/local/tmp/
adb shell sh /data/local/tmp/dates.sh
adb shell rm /data/local/tmp/dates.sh

Um script com milhares de linhas roda em segundos. Milhares de comandos adb separados levam minutos.

Avise a galeria

adb shell content call --uri content://media/ --method scan_volume --arg external_primary

Isso pede para o verificador de mídia do Android ler todos os arquivos de novo, o que leva um ou dois minutos em um celular cheio. No Android 9 e mais antigos, use isto para cada arquivo:

adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d "file:///sdcard/DCIM/Screenshots/photo.png"

Confira

Rode o comando stat de novo e depois abra a galeria. As fotos devem estar agora nos dias reais.

O mesmo sem linha de comando

A aba Celular Android do Photo Date & Metadata Fixer, disponível só no Windows, faz isso em pastas inteiras. Escolha uma pasta no celular, e o app lê a data de cada foto primeiro da data da captura na própria foto, depois do nome, depois da data do arquivo. Ele mostra o que mudaria e ajusta as datas em um passo. Toda mudança pode ser desfeita.

Perguntas frequentes

O touch muda a foto em si?

Não. Ele muda a data que o armazenamento guarda para o arquivo. A imagem e o EXIF continuam como estão.

Funciona com fotos que estão na nuvem do Google Fotos?

Não. Funciona com arquivos guardados no celular. Para fotos que só existem no Google Fotos, mude a data no app Google Fotos.

Dá para ajustar a data de criação também?

O armazenamento do Android não deixa definir uma data de criação. A data de modificação é a que os apps de galeria usam.