Importer et nommer des photos
Depuis longtemps j’adore prendre des photos, par le passé avec un
appareil argentique (Chinon CE4S) et maintenant avec un numérique
(Pentax K10).
L’usage de ces appareils photos numérique génère beaucoup de fichiers et
il parfois difficile de les classer correctement.
Dans ce billet, je vous présente la méthode que j’ai retenu pour classer
mes photos et le script qui me permet d’importer et nommer les fichiers
depuis un support quelconque.
Ce n’est peut être pas la meilleure des méthodes, mais elle semble
utilisée par beaucoup de photographes amateurs.
Depuis que j’utilise GNU/Linux, j’ai adopté pour le nommage des photos la règle suivante : AAAAMMJJ_HHmmss.jpg, ce qui signifie :
- AAAA : l’année
- MM : le numéro du mois
- JJ : la date
- hh : l’heure
- mm : les minutes
- ss : les secondes
L’ensemble de ces valeurs sont issues des données Exif enregistrées dans
le fichier de la photo par l’appareil numérique.
Si je fait donc une photo aujourdhui 28 novembre 2010 à 13 heure et 12
minutes, le nom du fichier sera donc 20101128_131200.jpg
.
Cette règle de nommage me permet d’avoir un nom unique pour les photos
puisque je ne peux pas prendre 2 photos à la même heure le même jour.
En nommant les fichiers avec l’année en premier, le mois en second et
enfin la date du jour, je peux trier mes photos dans l’ordre
chronologique ou elles ont été réalisées.
Pour classer les photos, je créé un répertoire par date de prise de
vues, ces dossiers ont pour nommage la date de la prise de vue ; la
syntaxe utilisée est AAAA-MM-JJ
.
Je rajoute généralement un commentaire dans le nom du dossier pour
identifier son contenu. Ainsi 2010-11-28_jardin
contiendra les photos
réalisées dans le jardin le 28 novembre 2010.
Pour faciliter le renommage et le classement des photos, j’ai réalisé un script qui automatise ces actions et qui peut être installés sous forme de Nautilus Script (gestionnaire de fichiers Nautilus du bureau Gnome) ou d’action personnalisée (gestionnaire de fichier Thunar du bureau Xfce).
Mise à jour du script
V0.3 du 11/05/11 : la lecture des données Exif est faite par
exiv2 au lieu de jhead, cela permet de lire la date de prise de
vue dans les fichiers au format RAW de mon APN Pentax K10 (fichiers
ayant l’extension PEF).
Le script import_photo.sh
:
#!/bin/bash
#
# import_photo.sh
#
# Script Nautilus d'import de photos
#
# Dependances : zenity jhead exiv2
#
#------------------------------------------------------------
Auteur="http://saintcarre.dyndns.org/"
Version="0.1 du 06/10/08"
Version="0.2 du 19/02/11"
# Suppression de l'affichage du nom de la photo
Version="0.3 du 11/05/11"
# Lecture de la date de la photo avec exiv2 au lieu de jhead
# -> permet de renommer les fichiers RAW (PEF pour mon Pentax K10
#------------------------------------------------------------
# Variables
#RepImages="$HOME/temp/Images" # Destination des photos
RepImages="$HOME/Images" # Destination des photos
Titre="Import d'image"
LigneSeparateur="--------------------"
Site="http://saintcarre.dyndns.org/" # Site pour publication des photos
Copyright="Licence : Paternité-Pas d'Utilisation Commerciale-Pas de Modification\nhttp://creativecommons.org/licenses/by-nc-nd/2.0/fr/"
#------------------------------------------------------------
function fct_aide ()
{
echo "$0"
echo -e "Importe les images sélectionnées.\nVersion $Version du $Date."
echo -e "Nous sommes le `date`."
echo -e ""
echo -e "Dependances :"
echo -e "- zenity \n- jhead \n-exiv2"
echo -e "\nInstallation"
echo -e "Copier le fichier $0 dans le dossier $HOME/.gnome2/nautilus-script et rendez le exécutable avec la commande chmod 755 $0"
echo -e "\nPour l'utiliser\nSélectionner plusieurs fichiers images et clic droit > Script > $0 lancera le traitement sur les fichiers sélectionnés."
}
#-----------------------------------------------------------------------------
function fct_lire_date_exif ()
{ # Lecture de la date de creation de la photo
#DatePhoto=`jhead $1 | grep Date | awk '{print $3}' | sed "s/:/ /g" `
DatePhoto=`exiv2 $1 | grep timestamp | awk '{print $4}' | sed "s/:/ /g" `
if [[ "$DatePhoto" == "" ]]
then
echo -e "-I-> Il n'y a pas de date de prise de vue dans $1, utilisation de la date du fichier."
echo -e "-D-> Creation des donnees Exif minimale et initalisation de la date exif a la date du fichier."
jhead -mkexif -dsft $1
fi
#Repertoire ou doivent être enregistrees les photos
Annee=`echo $DatePhoto | awk '{print $1}'`
Mois=`echo $DatePhoto | awk '{print $2}'`
Jour=`echo $DatePhoto | awk '{print $3}'`
RepDest=`echo "$RepImages/$Annee/$Annee-$Mois-$Jour"`
if [[ ! -d $RepDest ]]
then
echo -e "-I-> Creation du repertoire $RepDest."
mkdir -p $RepDest
fi
#echo "\n-I-> Copie et renommage de $1 "
echo -e " .\c"
cp $1 $RepDest/$1
exiftran -ai $RepDest/$1 # rotation de la photo dans le bon sens
exiv2 mv $RepDest/$1
# Insertion des commentaires dans l'image
# Pas de commentaires insere => autre script a faire
}
#-----------------------------------------------------------------------------
function fct_main ()
{
echo -e "\n\n\t $0\n"
echo -e "Importe les images sélectionnées.\nVersion $Version."
echo -e "Nous sommes le `date`."
echo -e "\t $LigneSeparateur"
# Si aucun parametres => pas d'images à copier
if [[ "$#" -eq 0 ]]; then
echo -e "-E-> Il n'y a aucun fichier(s) de sélectionné(s) !\n"
exit
fi
# Controle de l'existance du répertoire de destination
if [[ ! -d $RepImages ]]
then
echo -e "-I-> Creation du repertoire $RepImages."
mkdir $RepImages
fi
while [ $# -gt 0 ]; do
fct_lire_date_exif "$1"
shift
done
echo -e "\t $LigneSeparateur"
echo -e "\t RETURN pour fermer la fenetre.\n"
}
#-----------------------------------------------------------------------------
# Programme principal
fct_main "$@" | zenity --text-info --title "$Titre" --width=700 --height=500
Pour que ce script fonctionne, il faut avoir installé les prérequis :
apt-get install zenity exiv2 jhead
Pour Ubuntu, il faut précéder la commande de sudo.
Pour que ce script soit accessible depuis le menu du clic droit sous
Nautilus, il suffit de le copier dans le dossier
$HOME/.gnome2/nautilus_scripts
et de le rendre exécutable.