6 votes

Renommer les images de la caméra à partir des données exif en utilisant tasker

Je m'excuse si cela fait double emploi, mais je n'ai rien trouvé de nouveau qui puisse vraiment répondre à ma question.

Je sais que c'est pointilleux, mais c'est une longue bataille et je suis en train de la perdre.

Depuis quelque temps, je suis agacé par le fait qu'il est impossible de personnaliser la convention de dénomination de l'application appareil photo d'Android. Ma solution, depuis l'apparition du téléchargement de l'appareil photo par Dropbox, consiste à utiliser Dropbox pour télécharger et renommer mes photos (yyyy-mm-dd HH.nn.ss.jpg), puis à utiliser dropsync pour écraser le fichier original dans mon appareil photo.

Le problème auquel je suis confronté en ce moment est que l'appareil photo de l'application Hangouts ne suit pas les mêmes règles que l'application appareil photo par défaut de mon téléphone (Sony Xperia z3). Je me retrouve donc avec des doublons dans ma galerie de toute image que j'ai capturée en utilisant Hangouts au lieu de l'appareil photo. Je pourrais utiliser l'appareil photo pour prendre une photo et la partager en utilisant Hangouts, mais j'ai préféré jouer avec Tasker et essayer d'automatiser la consolidation de mes images. (J'aimerais donc me débarrasser complètement de Camera Upload et ne pas avoir toutes les captures d'écran que j'ai faites sauvegardées pour toujours.)

Le répertoire pour la caméra par défaut est [stockage interne]/DCIM/100ANDRO et pour les hangouts, c'est [stockage interne]/DCIM/Caméra.

J'ai un profil (ci-dessous) déclenché par l'événement "fichier modifié" qui déplace le nouveau fichier du dossier "Camera" vers le dossier "DCIM". Cependant, il y a souvent une condition de course, de sorte que Dropbox téléchargera l'image avant qu'elle ne soit déplacée et à nouveau après. Mon problème de duplication d'images n'est donc pas encore résolu.

tasker profile to move newly created image
(cliquez pour agrandir)

J'aimerais renoncer à la combinaison Dropbox/Dropsync et utiliser plutôt Tasker pour renommer un fichier lorsqu'il est ajouté à l'un des dossiers de la caméra. J'aimerais utiliser la même convention de dénomination que Dropbox, mais je n'arrive pas à comprendre comment Tasker peut accéder aux données EXIF de l'image pour renommer la photo en quelque chose comme "2014-12-30 10.23.56.jpg".

En résumé, j'utilise Tasker pour déplacer des images capturées par différentes applications dans un dossier commun. Quelqu'un peut-il m'aider à ajouter une étape pour renommer le fichier que je déplace en fonction de la date et de l'heure de la capture de l'image ?

2voto

MuditaMan Points 125

Utiliser les appels Java natifs de Tasker

Code Java

Utilisez ExifInterface.getAttribute pour résoudre ce problème.

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

Aperçu de la mise en œuvre

  1. Obtenir le chemin d'un .JPG à partir de %filename Variable Tasker
  2. Construire un nouveau ExifInterface de la classe dans exif Variable Java
  3. Obtenir la date et l'heure par exif.getAttribute fonction Java, et stocker les résultats dans %datetime Variable Tasker
  4. Gratuit exif Variable Java
  5. Vérifiez %datetime est réglé (ce paramètre n'est pas défini lorsque le fichier .JPG ne contient pas d'informations EXIF).

Solution étape par étape dans Tasker

  1. Ajouter un nouveau Code > Fonction Java action

    a. Définissez ExifInterface a Classe ou objet (ou sélectionner par le bouton de la loupe)

    b. Écrire à new \\ {ExifInterface} (String) a Fonction (ou sélectionner par le bouton de la loupe)

    c. Écrivez à %filename a Param (Chaîne)

    d. Écrire à exif a Retourner {ExifInterface}

  2. Ajouter un nouveau Code > Fonction Java action

    a. Écrivez à exif a Classe ou objet (ou sélectionner par le bouton café)

    b. Écrire à getAttribute \\ {String} (String) a Fonction (ou sélectionner par le bouton de la loupe)

    c. Écrire à exif.TAG_DATETIME a Param (Chaîne)

    d. Écrire à %datetime a Retourner {Chaîne}

  3. Ajouter un nouveau Code > Objet Java action

    a. Gauche Mode sur Delete

    b. et écrire exif a Nom

  4. Vérifiez %datetime est réglé - J'ai ajouté un Flash conditionnel pour l'affichage %datetime

C'est fait !

0voto

Chahk Points 19297

Puisque vous utilisez le déclencheur "fichier modifié" (qui devrait être instantané au moment où le fichier est écrit), vous pouvez utiliser la date et l'heure actuelles au lieu d'essayer d'extraire les données EXIF des images.

Tasker's getFormattedDate vous aidera à analyser la date et l'heure et à construire le nouveau nom de fichier. Le seul problème que vous pouvez rencontrer est si le dossier source contient plus d'une image. Vous pouvez utiliser une variable de compteur dans votre boucle et l'ajouter à la fin du nom de fichier pour atténuer ce problème.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X