Supprimer les métadonnées d'images avec exiv2

C'est quoi les métadonnées ?

Certains formats numériques d'images (comme le JPEG) permettent d'enregistrer l'image et des métadonnées associées à celle-ci. Une métadonnée est une donnée en décrivant une autre. Dans le cas d'une image, ça peut être un commentaire non présent sur l'image, les conditions de capture d'une photographie, les coordonnées GPS où elle a été prise ou le logiciel utilisé pour la faire/éditer.

Ces métadonnées ont de nombreuses utilités positives. Mais on peut vouloir les supprimer pour plusieurs raisons, comme économiser de la place, partager des photographies sans dévoiler sa position ou celle d'autrui (comme d'un animal qui pourrait intéresser des braconniers). Il existe heureusement des logiciels pour les supprimer.

Le logiciel exiv2

Cette article explique comment supprimer les métadonnées d'images avec un logiciel spécifique qui se nomme exiv2. Il en existe bien entendu d'autres. exiv2 est un logiciel libre et gratuit fonctionnant via la ligne de commande. Il est sous la licence GPLv2+. Il marche sur de nombreux systèmes (dont GNU/Linux, des BSD, Microsoft Windows et Apple macOS). Il est rapide et ne recompresse pas les images quand il touche aux métadonnées.

Installation avec APT

Debian fournit un paquet. Il en est de même pour Trisquel. Sous au moins Debian et Trisquel, il peut par exemple être installé avec les droits root/SuperUser via un shell texte (avec apt-get install exiv2, aptitude install exiv2 ou apt install exiv2) ou Synaptic.

Supprimer les métadonnées d'images

La suppression des métadonnées se fait très simplement avec exiv2 rm image-file ou exiv2 delete image-file. Le joker "*" peut bien entendu être utilisé. Pour supprimer les métadonnées des images dont le nom finit par "*.jpg" qui sont dans le dossier courant, vous pouvez donc utiliser la commande exiv2 rm *.jpg. Pour rappel, vous pouvez vous déplacer dans les dossiers avec la commande cd (change directory).

Supprimer les métadonnées d'images d'un dossier récursivement

Si un dossier contient d'autres dossiers avec des images avec des métadonnées non voulues, le joker ne suffit pas. En réalité, il peut suffir, mais il faudrait utiliser la commande dans chaque dossier. Si vos images sont organisés dans de nombreux dossiers imbriqués, c'est un calvaire. Je vous propose donc le script ci-dessous (que j'ai mis dans le domaine public, vous pouvez considérez qu'il est sous licence Creative Commons 0 en version 1.0).

#!/bin/sh

# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided this notice is
# preserved.  This file is offered as-is, without any warranty.

remove_metadata_dir()
{
    for file in *
    do
	if test -d "$file"
	then
	    cd "$file"
	    remove_metadata_dir "$file"
	    cd ..
	elif test -f "$file" -a "$file" != 'Thumbs.db'
	then
	    exiv2 rm "$file"
	fi
    done
}

if test $# = 0
then
    >&2 echo 'Give at least one file as argument.'
    exit 1
fi

for file in "$@"
do
    remove_metadata_dir "$file"
done