5 votos

Renombrar las imágenes de la cámara a partir de los datos exif usando el tasker

Me disculpo si esto es un duplicado, no puedo encontrar nada actualizado que realmente ayude a responder mi pregunta.

Sé que esto es muy meticuloso, pero ha sido una larga batalla y la estoy perdiendo.

Durante algún tiempo, me ha molestado el hecho de que no puedas personalizar la convención de nombres de la aplicación de la cámara Android. Mi solución, desde los inicios de la subida de cámaras Dropbox, ha sido usar dropbox para subir y renombrar mis fotos (yyyy-mm-dd HH.nn.ss.jpg) y luego usar dropsync para sobreescribir el archivo original de la foto de mi cámara.

El problema al que me enfrento en este momento es que la cámara de la aplicación "Hangouts" no sigue las mismas reglas que la aplicación de cámara por defecto de mi teléfono (Sony Xperia z3), por lo que acabo teniendo duplicados en mi galería de cualquier imagen que haya capturado por casualidad usando "hangouts" en lugar de la cámara. Podía usar la cámara para tomar una foto y luego compartirla usando los lugares de reunión, pero en lugar de eso decidí jugar con Tasker e intentar automatizar la consolidación de mis imágenes. (Otra queja que tengo es que Dropbox no me permite excluir carpetas, así que me gustaría deshacerme de la carga de la cámara por completo y no tener todas las capturas de pantalla que he tomado respaldadas para siempre).

El directorio de la cámara por defecto es [almacenamiento interno]/DCIM/100ANDRO y el de los lugares de reunión es [almacenamiento interno]/DCIM/Cámara

Tengo un perfil (abajo) disparado por el evento "file modified" que moverá el nuevo archivo de la carpeta "Camera" a la carpeta "DCIM". Sin embargo, a menudo hay una condición de carrera, por lo que Dropbox subirá la imagen antes de ser movida y otra vez después. Así que mi problema de imágenes duplicadas aún no está resuelto.

tasker profile to move newly created image
(click para una versión más grande)

Me gustaría renunciar al combo Dropbox/Dropsync y en su lugar usar Tasker para renombrar un archivo a medida que se agrega a cualquiera de las carpetas de la cámara. Me gustaría usar la misma convención de nombres que usa Dropbox, pero no puedo entender cómo Tasker puede acceder a los datos EXIF de la imagen para renombrar la foto a algo como "2014-12-30 10.23.56.jpg".

Así que, como tl;dr: Estoy usando Tasker para mover imágenes capturadas de diferentes aplicaciones a una carpeta común. ¿Alguien puede ayudarme a añadir un paso para renombrar el archivo que estoy moviendo basado en la fecha y hora en que la imagen fue capturada?

2voto

andras.tim Puntos 131

Utilizar las llamadas nativas de Tasker en Java

Código Java

Utilice ExifInterface.getAttribute para resolver este problema.

exif = new ExifInterface( %filename )
%datetime = exif.getAttribute(exif.TAG_DATETIME)

Resumen de la aplicación

  1. Obtención de la ruta de un .JPG desde %filename Variable Tasker
  2. Construir un nuevo ExifInterface de la clase en exif Variable Java
  3. Obtener la fecha y la hora por exif.getAttribute función Java, y almacenar los resultados en %datetime Variable Tasker
  4. Gratis exif Variable Java
  5. Consulte %datetime se establece (esto no se establece cuando el .JPG no contiene información EXIF)

Solución paso a paso en Tasker

  1. Añadir un nuevo Código > Función Java acción

    a. Establecer ExifInterface a Clase u objeto (o seleccionar con el botón de la lupa)

    b. Escriba new \\ {ExifInterface} (String) a Función (o seleccionar con el botón de la lupa)

    c. Escriba %filename a Parámetro (cadena)

    d. Escribir exif a Devuelve {ExifInterface}

  2. Añadir un nuevo Código > Función Java acción

    a. Escriba exif a Clase u objeto (o seleccionar con el botón del café)

    b. Escriba getAttribute \\ {String} (String) a Función (o seleccionar con el botón de la lupa)

    c. Escriba exif.TAG_DATETIME a Parámetro (cadena)

    d. Escribir %datetime a Devuelve {String}

  3. Añadir un nuevo Código > Objeto Java acción

    a. Izquierda Modo en Delete

    b. y escribir exif a Nombre

  4. Consulte %datetime se establece - He añadido un Flash condicional para mostrar %datetime

¡Hecho!

0voto

Chahk Puntos 15796

Dado que está utilizando el disparador "file modified" (que debe ser instantáneo en el momento en que se escribe el archivo), puede utilizar la fecha y la hora actuales en lugar de intentar extraer los datos EXIF de las imágenes.

El de Tasker getFormattedDate ayudará a analizar la fecha/hora y a construir el nuevo nombre del archivo. El único problema que puede tener es si la carpeta de origen contiene más de una imagen. Puedes usar una variable de contador dentro de tu bucle y añadirla al final del nombre de archivo para mitigar eso.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X