5 votes

Comment les modifications de l'application Galerie sont-elles appliquées aux images ?

J'ai remarqué aujourd'hui que si vous appliquez des filtres ou modifiez une image à l'aide de l'application Galerie, les changements sont appliqués à l'image, au lieu de créer une nouvelle image avec les changements. Ma première pensée a été que ce n'était pas une bonne idée. Parfois, vous souhaitez conserver l'image originale, non modifiée, ainsi que l'image modifiée, peut-être à des fins de comparaison, ou pour essayer différents filtres ou paramètres. Dans mon cas, je jouais avec les courbes, puis j'ai enregistré l'image. Je voulais comparer la nouvelle image avec l'original, mais l'original avait disparu. J'ai décidé de revenir aux réglages des courbes, et j'ai vu que les courbes étaient toujours telles que je les avais réglées, ce qui signifie que je peux simplement restaurer la courbe pour chaque canal et cela me rendra l'image originale.

J'ai décidé de faire un test avec une autre image. J'ai ouvert une nouvelle image, appliqué un filtre parmi les filtres prédéfinis et enregistré l'image. Je suis ensuite retourné à l'image et l'ai à nouveau modifiée, mais cette fois, j'ai supprimé le filtre et l'image est redevenue normale.

Ma première idée était que l'image de la galerie appliquait des modifications non destructives. Quelque chose de similaire à ce que font certains logiciels d'édition. Celui qui me vient à l'esprit est Shotwell, bien qu'il s'agisse plus d'une visionneuse que d'un éditeur, mais il dispose de certaines fonctionnalités limitées pour jouer avec la saturation, les niveaux et d'autres paramètres. Il ne semble pas probable que l'application galerie d'adroid fasse cela, car d'autres applications de visualisation d'images montrent l'image avec le filtre appliqué.

J'ai décidé de connecter l'appareil à l'ordinateur à l'aide d'un câble USB. J'ai navigué jusqu'au dossier de l'appareil photo, et j'ai ouvert l'image dans l'ordinateur, et il a montré l'image modifiée. Cela signifie que l'image est en train d'être modifiée. Alors que l'appareil était toujours connecté à l'ordinateur, j'ai décidé de retirer le filtre et d'ouvrir à nouveau l'image dans l'ordinateur. L'image est redevenue originale.

Comment Android est-il capable de modifier directement le fichier image, puis de le restaurer à l'état original. Est-ce qu'il enregistre le fichier original ailleurs ?

Comment se reproduire :

  1. Ouvrez l'application Galerie (celle par défaut)
  2. Choisissez une image à modifier, puis touchez le petit crayon dans le coin inférieur gauche de l'écran. gauche de l'écran.
  3. Modifiez votre image, touchez le bouton d'enregistrement ou appuyez simplement sur la touche retour. ou appuyez simplement sur le bouton Retour. Il vous sera demandé si vous souhaitez enregistrer l'image. Enregistrez-la.
  4. Touchez à nouveau le crayon, retirez le filtre.
  5. Votre image est redevenue originale.

Appareil : Nexus 7

Système d'exploitation : Android 4.4.2

1 votes

Pour autant que je sache, Gallery enregistre l'image modifiée dans un autre fichier du même dossier. Mais je n'ai jamais été sur KitKat...

0 votes

C'est ce que je pensais, mais je néglige trop mon appareil pour avoir lu quoi que ce soit à ce sujet auparavant.

5voto

Andy Brudtkuhl Points 1714

Vous pouvez trouver la source de cette application dans le paquet Gallery2 dans AOSP . Tout le code pour l'éditeur de photos est dans src/com/android/gallery3d/filtershow . La sauvegarde est assurée par tools/ImageSave.java qui contient ce commentaire expliquant le comportement (que j'ai mis en forme) : -.

Afin de supporter le nouveau comportement d'édition-sauvegarde tel que l'utilisateur ne verra pas l'image éditée avec l'image originale, nous ajoutons un nouveau répertoire auxiliaire pour l'image éditée. En fait, l'image originale sera cachée dans ce répertoire après modification et l'utilisateur ne verra que l'image modifiée.

Notez que la suppression de l'image éditée entraînera également la suppression de l'image originale dans le répertoire auxiliaire.

Il y a plusieurs situations que nous devons considérer :

  1. L'utilisateur modifie l'image locale local01.jpg . A local02.jpg sera créé dans le même répertoire, et l'image originale sera déplacée vers le répertoire auxiliaire en tant que ./.aux/local02.jpg . Si l'utilisateur modifie le local02.jpg , local03.jpg sera créé dans le répertoire local et ./.aux/local02.jpg sera renommé en ./.aux/local03.jpg

  2. Modification de l'image distante par l'utilisateur remote01.jpg à partir de picassa ou d'un autre serveur. remoteSavedLocal01.jpg sera enregistré dans le répertoire local approprié. Dans remoteSavedLocal01.jpg il y aura une référence pointant vers le remote01.jpg . Il n'y aura pas de copie locale de remote01.jpg . Si l'utilisateur modifie remoteSavedLocal01.jpg puis une nouvelle remoteSavedLocal02.jpg sera généré et pointera toujours vers le remote01.jpg

  3. L'utilisateur supprime toute image locale local.jpg . Puisque les noms de fichiers sont conservés de manière cohérente dans le répertoire auxiliaire, chaque fois qu'un fichier local.jpg sont supprimés, les fichiers du répertoire auxiliaire dont les noms commencent par " local. " sera supprimé. Ce modèle facilitera la suppression de plusieurs images dans le répertoire auxiliaire.

En bref : oui il enregistre les images éditées dans un .aux à l'intérieur du répertoire d'où provient l'image.

Il stocke également la chaîne de filtres que vous avez utilisée pour créer l'image en Métadonnées XMP à l'intérieur de la nouvelle image (celle qui est filtrée), dans l'espace de noms http://ns.google.com/photos/1.0/filter/ . Ces informations consistent en :

  • SourceFileUri : l'URI où il a enregistré le fichier non modifié
  • filterstack : une représentation sérialisée de la pile de filtres qu'il a utilisée (dans le même format qu'il enregistre les préréglages dans sa base de données privée)

0 votes

Excellente réponse ! Avec le lien du code et tout le reste. Je l'adore. Merci beaucoup, Dan.

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