Corregir la fecha de archivo de las fotos en Android con adb
Pon la fecha de archivo de las fotos de un móvil Android desde un ordenador con adb y touch, para que la galería vuelva a colocar capturas, imágenes de chats y fotos copiadas en su día real.
Para corregir la fecha de archivo de una foto en Android, conecta el móvil con la depuración USB activada y ejecuta adb shell touch -m -d "2019-07-14 11:05:00" "/sdcard/DCIM/Camera/photo.jpg". Después pide a la galería que vuelva a mirar con adb shell content call --uri content://media/ --method scan_volume --arg external_primary. La galería usa la fecha del archivo para toda foto que no lleve fecha de captura dentro, así que esto devuelve esas fotos a su día real.
Cuándo es la solución correcta
La galería ordena por la fecha de captura que hay dentro de la foto. Solo si no la hay usa la fecha del archivo. Así que esto importa para:
- capturas y grabaciones de pantalla
- imágenes de WhatsApp, Telegram y otros chats
- fotos copiadas al móvil con "Transferencia de archivos", que recibieron la fecha de hoy como fecha de archivo
- fotos restauradas desde una app de copia de seguridad que no mantuvo las fechas
Si una foto tiene dentro una fecha de captura incorrecta, cambiar la fecha del archivo no ayuda. Cambia la fecha de captura: cómo cambiar la fecha de una foto en Android.
Qué necesitas
- La depuración USB activada: cómo activar la depuración USB
- El adb de Google en el ordenador, de "SDK Platform-Tools"
- El móvil conectado y con permiso;
adb deviceslo muestra comodevice
Mira primero las fechas
adb shell stat -c '%y %n' "/sdcard/DCIM/Screenshots/*"
Cada línea muestra la fecha del archivo y el nombre. Una carpeta donde todos los archivos tienen el mismo día, el día en que los copiaste, es la que hay que corregir.
Poner la fecha de un archivo
adb shell touch -c -m -d "2019-07-14 11:05:00" "/sdcard/DCIM/Screenshots/Screenshot_20190714-110500.png"
-m pone la fecha de modificación, que es la que lee la galería. -c hace que touch nunca cree un archivo vacío si escribes mal el nombre. Sin -c, un error al escribir deja un archivo de cero bytes.
La hora se interpreta en la zona horaria del móvil. Si quieres ser exacto, usa en su lugar los segundos desde 1970: -d @1563095100.
Muchos archivos: saca la fecha del nombre
La mayoría de los móviles y apps de chat ponen la fecha en el nombre del archivo: Screenshot_20190714-110500.png, IMG-20220925-WA0018.jpg, IMG_20220104_184121.jpg. Un pequeño script en el ordenador puede convertir esos nombres en fechas y escribir una línea touch por archivo en un script, que luego el móvil ejecuta de una vez:
adb push dates.sh /data/local/tmp/
adb shell sh /data/local/tmp/dates.sh
adb shell rm /data/local/tmp/dates.sh
Un script con miles de líneas se ejecuta en segundos. Miles de comandos adb sueltos tardan minutos.
Avisa a la galería
adb shell content call --uri content://media/ --method scan_volume --arg external_primary
Esto pide al escáner multimedia de Android que vuelva a leer todos los archivos. En un móvil con muchas fotos tarda un minuto o dos. En Android 9 y anteriores, usa esto para cada archivo:
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d "file:///sdcard/DCIM/Screenshots/photo.png"
Comprueba
Vuelve a ejecutar el comando stat y abre la galería. Las fotos deberían estar ya en sus días reales.
Lo mismo sin línea de comandos
La pestaña Teléfono Android de Photo Date & Metadata Fixer, disponible solo en Windows, hace esto con carpetas enteras. Eliges una carpeta del móvil, y la aplicación lee la fecha de captura de cada foto de la propia foto, luego de su nombre y luego de su fecha de archivo, te enseña lo que cambiaría y pone las fechas en un solo paso. Todos los cambios se pueden deshacer.
Preguntas frecuentes
¿touch cambia la foto?
No. Cambia la fecha que guarda el almacenamiento para el archivo. La imagen y su EXIF se quedan como están.
¿Sirve para las fotos que están en la nube de Google Fotos?
No. Sirve para archivos guardados en el móvil. Para fotos que solo existen en Google Fotos, cambia la fecha en la app de Google Fotos.
¿Puedo poner también la fecha de creación?
El almacenamiento de Android no deja poner una fecha de creación. La fecha de modificación es la que usan las apps de galería.