¿Cómo puedo cambiar la fecha de mis fotos y videos en mi teléfono por sus nombres de archivo?

Ayer, moví un montón de fotos y videos antiguos a mi teléfono, usando un servidor FTP que instalé en mi teléfono. Todo salió bien, pero hoy descubrí que la fecha de todas las fotos y videos copiados fue ayer. Como resultado, mis fotos y videos ahora se muestran en el orden incorrecto en la aplicación Galería.

(Haga clic en la imagen para ampliar)

IMG: captura de pantalla

Afortunadamente, la fecha y la hora aún se conservan en los nombres de archivo. En este momento, quiero restaurar la fecha de las fotos y los videos usando sus nombres de archivo.

Estoy interesado en una manera de hacerlo. Realmente no me importa si es usando una aplicación o un script o algo más.

Soy consciente del hecho de que puedo copiar los archivos de mi computadora al teléfono nuevamente usando un protocolo diferente, pero eso no es lo que estoy buscando.

Respuestas (4)

Terminé escribiendo un guión bastante sucio para hacer esto. Para que esto funcione, asumo que tiene un dispositivo rooteado y que el directorio que contiene las imágenes y los videos es /sdcard/DCIM/Camera. De lo contrario, cambie el guión.

  1. Descarga BusyBox e instálalo. Esto es necesario para ejecutar comandos de shell de Linux.

  2. Cree un script llamado script.sh, que contenga este bloque de código, y colóquelo en la raíz de su tarjeta SD.

    cd DCIM/Camera
    echo "Navigated to `pwd`"
    
    ls
    
    for f in *.jpg *.3gp *.m4v
    do
    
      [ -e $f ] || continue    ## testing if the file exists
      NEWDATE=`echo $f | sed 's|IMG_||g' | sed 's|VID_||g' | sed 's|_||g' | \
      sed 's|.3gp||g'  | sed 's|.m4v||g' | sed 's|.jpg||g' | sed 's|........|&\.|g'`
    
      echo "Touching date $NEWDATE into $f..."
    
      touch -t "$NEWDATE" "$f" ## using touch to insert the new date into the file
    
    done
    
  3. Inicie adb shell y ejecute:

    su
    mount -o remount rw /sdcard
    

    para asegurarse de que realmente puede editar los archivos

  4. Mover a su tarjeta SD:

    cd /sdcard
    
  5. Ejecute el script de shell:

    sh script.sh
    
  6. Ahora inicie la aplicación Galería y espere. Especialmente si tiene una gran colección de archivos, Android puede tardar un poco en ordenar todo y actualizar el caché.

Si los datos EXIF ​​son correctos, puede usar jhead . Tenga en cuenta que esto solo funciona para archivos JPEG.

Primero, verifique si los archivos aún tienen datos EXIF ​​correctos usando:

jhead <file>

Luego usa la opción de jhead -ft:

-ftEstablece la marca de tiempo del sistema del archivo en lo que se almacena en el encabezado Exif.

jhead *.jpg
Suena bien, pero ¿hay algún binario para Android en alguna parte?

Puede cambiar fácilmente la marca de tiempo de las imágenes con muchos visores de imágenes. Por ejemplo, en FastStone Viewer: Herramientas -> Cambiar marca de tiempo -> elija la fecha de creación de EXIF. Puede seleccionar todas sus imágenes antes y aplicar esta función en todas ellas a la vez.

Mi única idea sobre los videos es un script, que analiza un nombre y establece el atributo del archivo.

¿Conoces alguna aplicación que pueda hacer eso directamente en Android? Ty.

Esta es una aplicación que puede hacer usted mismo, o puedo hacerlo por usted si así lo desea. Implica la manipulación de archivos utilizando la API de archivos de Java o las herramientas de shell de Unix, lo que prefiera. Creo que si tiene alguna experiencia en programación, la documentación de la API de Java es un buen lugar para comenzar. O, si tiene Windows, puede usar una extensión para el explorador de Windows llamada QTTabbar ( qttabbar.sourceforge.net ) que tiene una opción para copiar archivos conservando la última fecha de modificación. Sugiero copiar los archivos de su computadora al teléfono usando un cable USB.