On ne présente plus ImageMagick, une suite d'utilitaire en ligne de commandes incroyablement puissante qui permet de créer, de convertir, de modifier, d'afficher des images dans tous les formats possibles et imaginables, couper, tordre, changer les couleurs, pivoter, additionner, soustraire, etc..... enfin bref, on peut quasiment tout faire, et tout cela en ligne de commande, donc en le combinant à un langage de script notre imagination ne suffirait pas à atteindre les limites ! La documentation ImageMagick sur le site Ubuntu-fr donne un bref aperçu de sa puissance, quant la documentation officielle qui recense de manière exhaustive toutes les options, elle donne simplement le vertige tant les possibilités sont infinies ! Je vous présente ci dessous une seule commande dont je me sert relativement souvent, la concaténation d'image en deux temps trois mouvements :
Keyword - photos
samedi, septembre 17 2011
Concaténer des images simplement en ligne de commandes
Par Taltan le samedi, septembre 17 2011, 21:53 - Geekerie cultu-libriste
jeudi, juillet 10 2008
Mise à jour script exif_photos_rename_1.2, renommer les photos selon les données EXIF
Par Taltan le jeudi, juillet 10 2008, 12:15 - Geekerie cultu-libriste
En cette période de congés estivales, j'ai pu me replonger dans ce script que je voulais mettre à jour depuis un petit moment. Il permet de renommer massivement (via les nautilus-scripts) une série de photos selon les données EXIF sous la forme 20061104_19.41_007.jpg, les 3 derniers digits (ici *007*) étant un compteur qui s'incrémente.
La première modification concerne l'utilisation de l'utilitaire exiftool en lieu et place de imagemagick qui posait souci avec Ubuntu 8.04 LTS Hardy Heron. En effet avec la version native Hardy de imagemagick certaines commandes ne fonctionnaient plus, notamment la commande identify -format "%[EXIF:DateTime] qui retournait une ligne vide (voir le nota bene 3 à la fin de ce post). En outre je trouve que le traitement du script est plus rapide avec exiftool...
La deuxième modification concerne l'affichage d'une boite de dialogue qui permet de suivre l'état d'avancement du traitement en pourcentage, bien plus clean que le déroulement du script dans la fenêtre zenity...
Dépendances :
$ sudo apt-get install libimage-exiftool-perl zenity
Script exif_photos_rename_v1.2.sh :
- 09/07/08 - v1.2
- Remplacement de imagemagick par exiftool pour le traitement
- Ajout boîte de dialogue de barre de progression en pourcentage
- 27/07/07 - v1.1
- Script de renommage de photos selon les données EXIF
- Réorganisation
- Choix du début de numérotation, par défaut à 1
- 15/07/07 - v1.0
- Création
#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr - ola.taltan_AT_laposte.net #
############################################################################################
# Script exif_photos_rename_v1.2.sh #
# Licence : GNU / GPL #
############################################################################################
# Renomme les photos selon les données EXIF sous la forme : #
# ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.ext => ex : 20061104_19.41_007.jpg #
# Fonctionne pour une numérotation de 001 à 999 #
############################################################################################
# Dépendances #
############################################################################################
# - Nécessite le paquet exiftool : http://www.sno.phy.queensu.ca/~phil/exiftool/ #
# - Nécessite le paquet zenity : http://library.gnome.org/users/zenity/index.html.fr #
# => sudo apt-get install libimage-exiftool-perl zenity #
############################################################################################
# 15/07/07 - v1.0 - Création #
# 27/07/07 - v1.1 - Réorganisation #
# - Choix du début de numérotation, par défaut à 1 #
# 09/07/08 - v1.2 - Remplacement de imagemagick par exiftool pour le traitement #
# - Ajout boîte de dialogue de barre de progression en pourcentage #
############################################################################################
## Variables
nb_param="$#"
erreur=0
typeset -i CNT=1
typeset -i CUR=0
## Fonctions début de numérotation
début_numerot ()
{
numParam=`zenity --title "Début de numérotation" --entry-text="1" --entry --text "Par défaut à 1, à modifier le cas échéant :"`
if [ $? != 0 ]; then
exit 1
fi
[ $? -ne 0 ] && exit 2 # Annulation
}
## Fonctions renommage des fichiers
rename_jpeg ()
{
for parametre in "$@";
do
old_name="$parametre"
date_time=`exiftool "$parametre" | grep "Create Date"`
extension=`echo $parametre | awk -F "." '{print $NF}'`
aa=`echo $date_time | cut -d: -f2 | cut -c2-5`
mm=`echo $date_time | cut -d: -f3`
jj=`echo $date_time | cut -d: -f4 | cut -c1-2`
hh=`echo $date_time | cut -d: -f4 | cut -c4-5`
min=`echo $date_time | cut -d: -f5`
if [ $numParam -gt 0 ] && [ $numParam -lt 10 ]; then
numero=00$numParam
fi
if [ $numParam -gt 9 ] && [ $numParam -lt 100 ]; then
numero=0$numParam
fi
if [ $numParam -gt 100 ] ; then
numero=$numParam
fi
new_nane=`echo ${aa}${mm}${jj}_${hh}.${min}_${numero}.${extension}`
cp "$old_name" "${new_nane}"
if [ $? = 0 ] ; then
echo "${old_name} => ${new_nane} .... OK" >> /tmp/exif_photos_rename.log
rm -f "$old_name"
else
echo "Impossible de renommer $old_name .... NOK" >> /tmp/exif_photos_rename.log
let $[erreur += 1]
fi
CUR=$CNT*100/$nb_param
echo $CUR
echo "#Traitement de $nb_param photos\n${old_name} => ${new_nane} ... en cours\n\nAvancement: $CUR %\n "
CNT=$CNT+1
let $[numParam += 1]
done
nb_renomme=$(( $nb_param - $erreur ))
if [ $erreur != 0 ] ; then
touch /tmp/exif_photos_rename.err
echo "#Fin de traitement : $nb_param fichiers\n\nFichiers renommés : $nb_renomme\nFichiers impossible à renommer : $erreur\n\n _!!_ Cliquer sur Valider pour afficher le rapport de traitement _!!_\n"
else
echo "#Fin de traitement : $nb_param fichiers\n\nFichiers renommés : $nb_renomme\nFichiers impossible à renommer : $erreur\n\nOK, vous pouvez fermer en cliquant sur Valider !\n"
fi
}
## Fonctions affichage du rapport de traitement
affich_log ()
{
if [ -f /tmp/exif_photos_rename.err ] ; then
cat /tmp/exif_photos_rename.log | zenity --text-info --title "/tmp/exif_photos_rename.log" --width=500 --height=500
fi
rm -f /tmp/exif_photos_rename.log
rm -f /tmp/exif_photos_rename.err
}
## Traitement
if [ "$#" -eq 0 ]; then
zenity --error --title="error" --text="Selectioner au moins 1 fichier"
exit 1
fi
début_numerot
rename_jpeg "$@" | zenity --progress --title="exif_photos_rename" --percentage=0
affich_log
Mise en place :
Placer le script exif_photos_rename_v1.2.sh dans le dossier ~/.gnome2/nautilus-scripts, puis le rendre exécutable
$ sudo chmod +x ~/.gnome2/nautilus-scripts/exif_photos_rename_v1.2.sh
Utilisation :
Sélectionner les photos à traiter, puis clic droit / Scripts / exif_photos_rename_v1.2.sh
Cliquer sur Valider ou modifier le début de numérotation le cas échéant :

Le traitement s'effectue, l'état d'avancement en pourcentage s'affiche :
A la fin du traitement :
1. Si aucune erreur n'est détectée, une petite récap s'affiche
2. Si des fichiers n'ont pu être renommés :
Résultat :
NB 1 : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien 
NB 2 : Suite à un commentaire de Batchajan sur mon post sur exif_photos_rename_v1.1, j'ai également attaché à ce billet une variante de mon script, exiftool_v1.0.sh. Batchajan l'a en effet modifié pour rajouter les fonctions suivantes :
- Eviter le rerenommage d'une photo déjà moulinée
- Classer les photos renommées dans les répertoires aaaa/aaaa-mm
Merci à Batchajan pour ces modifications, elles pourront être utiles... 
NB 3 : Utilisant imagemagick dans d'autres scripts sur mon Ubuntu 8.04 Hardy Heron, notamment PhpWebGallery_create, j'ai du compiler la dernière version stable de imagemagick à partir des sources :
sudo apt-get install libfontconfig1-dev libjpeg62-dev libpng12-dev librsvg2-dev libtiff4-dev libjasper-dev libwmf-dev "télécharger la dernière version de ImageMagick-6.4.xx" => ftp://ftp.fu-berlin.de/unix/X11/graphics/ImageMagick/ tar -xvzf ImageMagick-6.4.xx cd ImageMagick-6.4.xx ./configure make sudo make install
Puis après la compilation, j'ai rajouté à la fin de mon fichier ~/.bashrc la ligne
export LD_LIBRARY_PATH=/usr/local/lib
dimanche, août 26 2007
Script PhpWebGallery_create maj v3.0.1
Par Taltan le dimanche, août 26 2007, 08:47 - Geekerie cultu-libriste
Voila une mise à jour du script PhpWebGallery_create, il passe en version v3.0.1, disponible ici. Le seul changement est la possibilité de jouer sur la compression (variable COMPRESS_QUALITY_THUMB) des miniatures pour réduire au maximum leur poid.
Historique :
- 23/07/2007 : Script v3 de génération automatique de galeries PhpWebGallery
- 18/07/2007 : Script v2 de génération automatique de galeries PhpWebGallery
- 02/09/2006 : Script v1 de génération automatique de galeries PhpWebGallery
Description :
Script bash de génération automatique de galeries PhpWebGallery pour Linux, crée une arborescence prêt à être uploader.
Sur dossier
Soit à partir du navigateur de fichier en sélectionnant un dossier à traiter, soit en exécutant directement le script :
Traitement récursif d'un dossier complet, crée un clone au format PWG de l'arborescence (sous-dossier compris) du dossier choisi, prêt à être uploader dans PWG. Il ne reste plus qu'a uploader le dossier sur le Web.
Sur photos
Soit à partir du navigateur de fichier en sélectionnant les photos à traiter, soit en exécutant directement le script :
Créer une galerie au format PWG à partir des photos selectionnées Pwg, crée un dossier. Il ne reste plus qu'a uploader le dossier sur le Web.
Processus
- Demande du nom de la galerie
- Crée les dossier nécessaire dans le dossier courant
- Traite les images originales et les copie, 3 choix possibles
- Aucun, déplacement de l'original
- Augmente la compression en gardant la résolution originale
- Réduit la résolution originale sans compression
- Création des images affichées dans la galerie
- Création des miniatures
Plate-forme :
- Linux
- Tout Linux, script bash
- Gnome via les nautilus-script dans nautilus
- Kde via les servicemenus dans konqueror, si une âme charitable voulait bien le porter avec kdialog
- Windows (possible car ImageMagick y est également porté), si une âme charitable..bis

Dépendances
- Nécessite le paquet imagemagick
- Nécessite le paquet zenity
Pour une distribution basée sur les .deb
$ apt-get install imagemagick zenity
Pour les autres rendez-vous ici
PhpWebGallery_create_v3.0.1.sh
- 26/08/07 - v3.0.1
- Rajout variable compression photos miniatures
- 23/07/07 - v3.0
- Réorganisation
- Rajout de la fonctionnalité traitement d'un dossier recursivement
- Rajout de la fonctionnalité stand alone (sans selection de dossier ou fichier)
- 21/07/07 - v2.1
- Fix bug orientation de la photo avec des noms de fichier avec des espaces
- 17/07/07 - v2.0
- Ajout différents test avants éxécution
- Ajout de l'interface zenity
- 02/09/06 - v1.0
- Création
Les variables suivantes sont à modifier (ou pas) selon vos besoins, c'est une histoire de compromis entre la taille, le poids et l'affichage souhaité.
- Taille des photos miniatures : THUMB_L="128" et THUMB_H="96"
- Compression des miniatures : COMPRESS_QUALITY_THUMB="70" (0=maximum, 100=aucune)
- Taille des photos à afficher dans phpwebgallery : PICT_L="800" et PICT_H="600"
- Compression des photos à afficher dans phpwebgallery : COMPRESS="72" (+ élevé = + de compression)
- Taille des photos, images tailles réelles : REAL_L="1280" et REAL_H="1024" (fixe la hauteur ou la largeur selon l'orientation)
Mise en place
Via les nautilus script de gnome
Placer le script PhpWebGallery_create_v3.0.1.sh dans le dossier ~/.gnome2/nautilus-scripts, puis le rendre exécutable
$ chmod +x ~/.gnome2/nautilus-scripts/PhpWebGallery_create_v3.0.1.sh
Exécution :
- Soit via le nautilus scripts, sélectionner les photos (ou un dossier) puis clic droit / Scripts / PhpWebGallery_create.sh
- Soit en stand alone en exécutant directement ~/.gnome2/nautilus-scripts/PhpWebGallery_create_v3.0.sh sans paramêtre, vous pouvez également rajouter un lanceur dans le tableau de bord
En stand alone
Placer le script PhpWebGallery_create_v3.0.1.sh dans le dossier /sbin, puis le rendre exécutable
$ chmod +x /bin/PhpWebGallery_create_v3.0.1.sh
Utilisation
Documentation disponible ici en PDF et en annexe
NB : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien 
Références
- Script Inspiré du script Rep2Thumb.sh de Gothico et gallery.sh de wiloo
- Documentation de zenity + l'aide de gnome
lundi, juillet 23 2007
Script v3 de génération automatique de galeries PhpWebGallery
Par Taltan le lundi, juillet 23 2007, 22:59 - Geekerie cultu-libriste
Pour faire suite à ces billet :
- 18/07/2007 : Script v2 de génération automatique de galeries PhpWebGallery
- 02/09/2006 : Script v1 de génération automatique de galeries PhpWebGallery
Voila la version 3 du script PhpWebGallery_create avec deux nouvelles fonctionnalités :
- Traitement récursif d'un dossier complet, crée un clone au format PWG de l'arborescence (sous dossier compris) du dossier choisi, prêt à être uploader dans PWG
- Mode stand alone : fonctionne sans argument (demande le type de traitement : dossier ou photos)
Encore un pas de plus vers le "user-friendly" car il n'est plus obligatoire de l'utiliser via les nautilus scripts, il se suffit à lui même. Vous pouvez quand même l'intégrer à Nautilus, comme les versions précédentes.
Plate-forme :
- Linux
- Tout Linux, script bash
- Gnome via les nautilus-script dans nautilus
- Kde via les servicemenus dans konqueror, si une âme charitable voulait bien le porter avec kdialog
- Windows (possible car ImageMagick y est également porté), si une âme charitable..bis

Dépendances :
- Nécessite le paquet imagemagick
- Nécessite le paquet zenity
Pour une distribution basée sur les .deb
$ apt-get install imagemagick zenity
Pour les autres rendez-vous ici
PhpWebGallery_create_v3.0.sh :
Le code s'étant quelque peu empâté (il est en effet passé d'environ 150 lignes à plus de 600 !), je vous en épargne l'affichage ici 
- 23/07/07 - v3.0
- Réorganisation
- Rajout de la fonctionnalité traitement d'un dossier recursivement
- Rajout de la fonctionnalité stand alone (sans selection de dossier ou fichier)
- 21/07/07 - v2.1
- Fix bug orientation de la photo avec des noms de fichier avec des espaces
- 17/07/07 - v2.0
- Ajout différents test avants éxécution
- Ajout de l'interface zenity
- 02/09/06 - v1.0
- Création
Les variables suivantes sont à modifier (ou pas) selon vos besoins, c'est une histoire de compromis entre la taille, le poids et l'affichage souhaité.
- Taille des photos miniatures : THUMB_L="128" et THUMB_H="96"
- Taille des photos à afficher dans phpwebgallery : PICT_L="800" et PICT_H="600"
- Taille des photos, images tailles réelles : REAL_L="1280" et REAL_H="1024" (fixe la hauteur ou la largeur selon l'orientation)
Mise en place :
Via les nautilus script de gnome
Placer le script PhpWebGallery_create_v3.0.sh dans le dossier ~/.gnome2/nautilus-scripts, puis le rendre exécutable
$ chmod +x ~/.gnome2/nautilus-scripts/PhpWebGallery_create_v3.0.sh
Exécution :
- Soit via le nautilus scripts, sélectionner les photos (ou un dossier) puis clic droit / Scripts / PhpWebGallery_create.sh
- Soit en stand alone en exécutant directement ~/.gnome2/nautilus-scripts/PhpWebGallery_create_v3.0.sh sans paramêtre, vous pouvez également rajouter un lanceur dans le tableau de bord
En stand alone
Placer le script PhpWebGallery_create_v3.0.sh dans le dossier /sbin, puis le rendre exécutable
$ chmod +x /bin/PhpWebGallery_create_v3.0.sh
Utilisation :
Même remarque que pour l'empâtement du code (légère surcharge en screenshot), disponible ici en PDF et en annexe
NB : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien 
Références :
- Script Inspiré du script Rep2Thumb.sh de Gothico et gallery.sh de wiloo
- Documentation de zenity + l'aide de gnome
mercredi, juillet 18 2007
Script v2 de génération automatique de galeries PhpWebGallery
Par Taltan le mercredi, juillet 18 2007, 23:59 - Geekerie cultu-libriste
Pour faire suite à mon billet sur la création de galeries PhpWebGallery voila la version 2.0 du script. Je vais donc passer rapidement sur la présentation de PhpWebGallery, logiciel sous licence GNU/GPL de présentation de photos sur le web basé sur le couple PHP / MySQL, en demo ici. Cette nouvelle version, associé au scripts nautilus, se veut plus "user-friendly", tout se fait le plus simplement possible (à la souris) et surtout, contrairement à la v1.0, les erreurs sont gérées et le déroulement du traitement est visible.
Le processus d'import de galerie dans PhpWebGallery (Pwg) est assez simple, il suffit d'uploader les photos via FTP (je vous conseille au passage l'excellente extension Firefox qu'est FireFTP) et de se rendre sur l'interface d'administration pour synchroniser les galeries. Comme souligné dans le Wiki Pwg, il est recommandé de traiter les photos avant de les importer dans Pwg afin de travailler sur l'arborescence, les résolutions, les tailles de fichiers, les miniatures.
Pour Pwg une galerie est un dossier, par exemple la galerie nommé Galerie_test :
|+- Gallerie_test | |+- pwg_high => dossier contenant les images tailles réelles, haute résolution | | |-- img_01.jpg | | |-- img_02.jpg | | |-- img_03.jpg | |+- thumbnail => dossier contenant les miniatures, taille 128x98 par exemple | | |-- TN-img_01.jpg les miniatures doivent reprendre | | |-- TN-img_02.jpg le nom de l'image originale | | |-- TN-img_03.jpg avec le préfixe TN- | |-- img_01.jpg | |-- img_02.jpg => photos de la Galerie_test, taille 800x600 par exemple | |-- img_03.jpg
la finalité de PhpWebGallery_create est, qu'à partir du navigateur de fichier, on sélectionne des photos, qu'on fasse un clic droit / Créer une galerie, qu'on renseigne le nom de la galerie et ... c'est tout. Un dossier respectant la nomenclature et l'arborescence Pwg (comme décris ci-dessus) contenant les photos sera créé. Il ne reste plus qu'a uploader le dossier sur le Web.
Plate-forme :
- Gnome via les nautilus-script dans nautilus
- Kde (script à adapter à kdialog) via les servicemenus dans konqueror mais je ne traiterai ici que de Gnome et nautilus
Dépendances :
- Nécessite le paquet imagemagick
- Nécessite le paquet zenity
Pour une distribution basée sur les .deb
$ apt-get install imagemagick zenity
Pour les autres rendez-vous ici
PhpWebGallery_create_v2.1.sh :
- 21/07/07 - v2.1
- Fix bug orientation de la photo avec des noms de fichier avec des espaces
- 17/07/07 - v2.0
- Ajout différents test avants éxécution
- Ajout de l'interface zenity
- 02/09/06 - v1.0
- Création
#!/bin/bash
######################################################################################################
# Taltan - http://www.taltan.fr - ola.taltan_AT_laposte.net #
# http://www.taltan.fr/post/2007/07/18/Script-v20-de-generation-automatique-de-galeries-PhpWebGallery#
######################################################################################################
# Script PhpWebGallery_create_v2.1.sh #
# Licence : GNU / GPL #
######################################################################################################
# Inspiré du script Rep2Thumb.sh de Gothico #
# http://forum.phpwebgallery.net/viewtopic.php?id=5522 #
# Inspiré du script gallery.sh de wiloo #
# http://forum.phpwebgallery.net/viewtopic.php?pid=37829 #
######################################################################################################
# Script de création de galerie pour PhpWebGallery #
# A intégrer dans les nautilus script (applicable aux fichiers selectionnés) #
# Création de miniatures #
# Création de photos redimensionnées #
######################################################################################################
# Dépendances #
######################################################################################################
# - Nécessite le paquet imagemagick : http://doc.ubuntu-fr.org/imagemagick #
# - Nécessite le paquet zenity #
# => sudo apt-get install imagemagick zenity #
######################################################################################################
# 02/09/06 - v1.0 - Création #
# 17/09/07 - v2.0 - Ajout différents test avants éxécution #
# - Ajout de l'interface zenity #
# 21/09/07 - v2.1 - Fix bug orientation de la photo avec des noms de fichier avec des espaces #
######################################################################################################
########################################################################
## CONFIGURATION ##
########################################################################
# vérifie si imagemagick est installé
which convert 2>/dev/null
if [ $? != 0 ]
then
zenity --error --title="Erreur" --text="La paquet Imagemagick n'est pas installé"
fi
#teste si au moins 1 fichier est selectioné
if [ $# -eq 0 ]; then
zenity --error --title="Erreur" --text="Selectionner au moins 1 fichier"
exit 1
fi
# Chemin complet de la galerie à créer
GALLERY_PATH="`pwd`"
##
# Nom de la galerie
while [ ! "$GALERY_NAME" ] # Réafficher la fenetre tant que l'utilisateur n'a pas fait de choix
do
GALERY_NAME=`zenity --title "Nom de la galerie" --entry --text "Entrer le nom de la galerie"`
if [ $? != 0 ]; then
exit 1
fi
[ $? -ne 0 ] && exit 2 # Annulation
done
# Nom du répertoire à créer pour les miniatures
# ("thumbnail" par défaut dans phpwebgallery)
THUMB_DIR="thumbnail"
# Nom du répertoire à créer pour les images tailles réelles
# ("pwg_high" par défaut dans phpwebgallery)
REAL_DIR="pwg_high"
# Préfixe des miniatures
THUMB_PREFIX="TN-"
## L pour Largeur
## H pour Hauteur
# Taille des photos miniatures
THUMB_L="128"
THUMB_H="96"
# Taille des photos à afficher dans phpwebgallery
PICT_L="800"
PICT_H="600"
# Taille des photos images tailles réelles dans REAL_DIR
REAL_L="1280"
REAL_H="1024"
# Garder les données EXIF ou non
# Avec EXIF => ""
# Sans EXIF => "-strip"
EXIF=""
# Choix du traitement pour l'image en taille réelle
while [ ! "$TRAIT_REAL_CHOICE" ] # Réafficher la fenetre tant que l'utilisateur n'a pas fait de choix
do
TRAIT_REAL_CHOICE=`zenity --list --width=500 --height=200 \
--title="Choisissez le type de traitement pour l'image en taille réelle" \
--column="N°" --column="Description" \
a "Aucun, déplacement de l'original" \
b "Augmente la compression en gardant la résolution originale" \
c "Réduit la résolution originale sans compression"`
###### Choix -> Sortie boucle ######
if [ $? != 0 ]; then
exit 1
fi
[ $? -ne 0 ] && exit 2 # Annulation
done
if [ $TRAIT_REAL_CHOICE == "a" ] # Déplacement de l'original dans le répertoire configuré pour les mages tailles réelles
then
trait_real ()
{
cp "$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
}
fi
if [ $TRAIT_REAL_CHOICE == "b" ] # Augmente la compression en gardant la résolution originale
then
trait_real ()
{
convert -density 72 $EXIF "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
}
fi
if [ $TRAIT_REAL_CHOICE == "c" ] # Réduit la résolition originale sans compression
then
trait_real ()
{
convert $EXIF -resize $REAL_SIZE "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
}
fi
########################################################################
## TRAITEMENT DES IMAGES ##
########################################################################
# Création des miniatures dans le répertoire configuré
mkdir "$GALLERY_PATH/$GALERY_NAME"
mkdir "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR"
mkdir "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR"
numParam=1
erreur=0
nb_param="$#"
for parametre in "$@";
do
# Orientation de la photo
L="`identify \"$parametre\" | sed s/JPEG/^/g | cut -d^ -f2 | cut -d\ -f2 | cut -dx -f1`"
H="`identify \"$parametre\" | sed s/JPEG/^/g | cut -d^ -f2 | cut -d\ -f2 | cut -dx -f2`"
if [ $L -gt $H ]
then
THUMB_SIZE="${THUMB_L}x${THUMB_H}"
PICT_SIZE="${PICT_L}x${PICT_H}"
REAL_SIZE="${REAL_L}x${REAL_H}"
else
THUMB_SIZE="${THUMB_H}x${THUMB_L}"
PICT_SIZE="${PICT_H}x${PICT_L}"
REAL_SIZE="${REAL_H}x${REAL_L}"
fi
echo "${numParam}. Traitement de $parametre : .... OK "
# traitement pour l'image en taille réelle
trait_real $parametre
# Création des images affichées dans la galerie
convert -density 72 $EXIF -resize $PICT_SIZE "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre" "$GALLERY_PATH/$GALERY_NAME/$parametre";
# Création des miniatures dans le répertoire configuré pour les miniature
convert -thumbnail $THUMB_SIZE -density 72 "$GALLERY_PATH/$GALERY_NAME/$parametre" "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR/$THUMB_PREFIX$parametre";
let $[numParam += 1]
if [ $numParam -gt "$#" ] ; then
echo "-----------------------------------------"
echo "Fin de traitement : $# fichiers "
echo "-----------------------------------------"
echo "OK, vous pouvez fermer !"
fi
done | zenity --text-info --title "PhpWebGallery_create" --width=500 --height=500
Les variables suivantes sont à modifier (ou pas) selon vos besoins, c'est une histoire de compromis entre la taille, le poids et l'affichage souhaité.
- Taille des photos miniatures : THUMB_L="128" et THUMB_H="96"
- Taille des photos à afficher dans phpwebgallery : PICT_L="800" et PICT_H="600"
- Taille des photos, images tailles réelles : REAL_L="1280" et REAL_H="1024" (fixe la hauteur ou la largeur selon l'orientation)
Mise en place :
Placer le script PhpWebGallery_create_v2.0.sh dans le dossier ~/.gnome2/nautilus-scripts, puis le rendre exécutable
$ chmod +x ~/.gnome2/nautilus-scripts/PhpWebGallery_create_v2.0.sh
Utilisation :
NB : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien 
Supposons que vous voulez créer une galerie nommée Galerie_test à partir des photos situées dans le dossier Dossier_test
|+- Dossier_test | |-- img_01.jpg | |-- img_02.jpg | |-- img_03.jpg
Sélection des photos du Dossier_test, puis clic droit / Scripts / PhpWebGallery_create_v2.0.sh :
Renseigner le nom de la galerie, Galerie_test :

Sélectionner le traitement voulu pour les images "tailles réelles", toujours la même histoire de compromis entre la taille, le poids et l'affichage souhaité :
Une fois le traitement terminé :
Le dossier Dossier_test a l'arborescence ci-dessous (en gras les dossiers et fichiers créés) :
|+- Dossier_test | |+- Gallerie_test | | |+- pwg_high | | | |-- img_01.jpg | | | |-- img_02.jpg | | | |-- img_03.jpg | | |+- thumbnail | | | |-- TN-img_01.jpg | | | |-- TN-img_02.jpg | | | |-- TN-img_03.jpg | | |-- img_01.jpg | | |-- img_02.jpg | | |-- img_03.jpg | |-- img_01.jpg | |-- img_02.jpg | |-- img_03.jpg
Le dossier Galerie_test est prêt à être uploader sur le Web dans Pwb
Références :
- Script Inspiré du script Rep2Thumb.sh de Gothico et gallery.sh de wiloo
- Documentation de zenity + l'aide de gnome
mardi, juillet 17 2007
Script de renommage de photos selon les données EXIF
Par Taltan le mardi, juillet 17 2007, 09:14 - Geekerie cultu-libriste
Avec les photos numériques on ne compte pas, on prend des dizaines (voir des centaines) de photos puis on les importe sur le PC pour les trier. Personnellement j'utilise gThumb car il est léger, simple à utiliser, n'est pas usine à gaz, dispose de fonctionnalités assez avancées et en plus est intégré nativement dans Ubuntu. Le premier de ces tris est le renommage, j'ai l'habitude de renommer mes photos en fonction de la date de prise de vue (+ une numérotation) ce qui permet par la suite d'effectuer un tri chronologique dans l'explorateur de fichiers et d'avoir un nom unique.
il est possible de renommer massivement des photos en fonction des données EXIF avec gThumb mais le meilleur résultat que j'ai pu en tirer est un nom de fichier sous la forme 2006-11-04--19.41.56_007.jpg. C'est presque le résultat attendu sauf que je n'ai pas trouvé le moyen d'enlever le double tiret et les secondes qui sont superflus. Voila le pourquoi de ce script, utilisé via les scripts nautilus, en deux clics il permet de renommer une série de photos sous la forme 2006-11-04_19.41_007.jpg
Dépendances :
- Nécessite le paquet imagemagick
- Nécessite le paquet zenity
$ sudo apt-get install imagemagick zenity
Script exif_photos_rename_v1.1.sh :
- 27/07/07 - v1.1
- Réorganisation
- Choix du début de numérotation, par défaut à 1
- 15/07/07 - v1.0
- Création
#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr - #
############################################################################################
# Script exif_photos_rename_v1.1.sh #
# Licence : GNU / GPL #
############################################################################################
# Renomme les photos selon les données EXIF sous la forme : #
# ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.ext => ex : 2006-11-04_19.41_007.jpg #
# Fonctionne pour une numérotation de 001 à 999 #
############################################################################################
# Dépendances #
############################################################################################
# - Nécessite le paquet imagemagick : http://doc.ubuntu-fr.org/imagemagick #
# - Nécessite le paquet zenity #
# => sudo apt-get install imagemagick zenity #
############################################################################################
# 15/07/07 - v1.0 - Création #
# 27/07/07 - v1.1 - Réorganisation #
# - Choix du début de numérotation, par défaut à 1 #
############################################################################################
## Variables
nb_param="$#" # nb de paramètres passés au script
erreur=0 # initialisation du compteur d'erreurs à 0
## Fonctions début de numérotation
début_numerot ()
{
numParam=`zenity --title "Début de numérotation" --entry-text="1" --entry --text "Par défaut à 1, à modifier le cas échéant :"`
if [ $? != 0 ]; then # si fermeture
exit 1
fi
[ $? -ne 0 ] && exit 2 # si annulation
}
## Fonctions renommage des fichiers
rename_jpeg ()
{
for parametre in "$@"; # pour chaque fichier selectionné
do # faire
old_name="$parametre" # on définie le nom du fichier actuel
date_time=`identify -format "%[EXIF:DateTime]" "$parametre"` # création de la variable date / heure de la photo (ex: 2006:11:04 19:41:30. )
extension=`echo $parametre | awk -F "." '{print $NF}'` # création de la variable extension du fichier (ex : .jpg)
aa=`echo $date_time | cut -d: -f1` # création de la variable année (ex : 2006)
mm=`echo $date_time | cut -d: -f2` # création de la variable mois (ex : 11)
jj=`echo $date_time | cut -d: -f3 | cut -c1-2` # création de la variable jour (ex : 04)
hh=`echo $date_time | cut -d: -f3 | cut -c4-5` # création de la variable heure (ex : 19)
min=`echo $date_time | cut -d: -f4` # création de la variable minute (ex: 41)
# création de la variable numérotation
if [ $numParam -gt 0 ] && [ $numParam -lt 10 ]; then # pour les paramètres 1 à 9
numero=00$numParam # rajouter 2 digit => 001, 002, 003,..., 009
fi
if [ $numParam -gt 9 ] && [ $numParam -lt 100 ]; then # pour les paramètres 10 à 99
numero=0$numParam # rajouter 1 digit => 010, 011, 012,..., 099
fi
if [ $numParam -gt 100 ] ; then # pour les paramètres supérieur à 100
numero=$numParam # ne pas rajouter de digit => 100, 101, 102,...
fi
new_nane=`echo ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.${extension}` # on définie le nouveau nom => 2006-11-04_19.41_num.jpg
cp "$old_name" "${new_nane}" # on renomme le fichier en le copiant
if [ $? = 0 ] ; then # si la copie a reussi
echo "${old_name} => ${new_nane} .... OK"
rm -f "$old_name" # => supprime le fichier original
else # si la copie a echoué
echo "Impossible de renommer $old_name .... NOK" # => message d'erreur
let $[erreur += 1] # incrémentation du compteur d'erreur
fi
let $[numParam += 1] # incrémentation du numéro de paramètre
done
nb_renomme=$(( $nb_param - $erreur )) # création de la variable nombre de fichiers renommés
echo "-----------------------------------------"
echo "Fin de traitement : $# fichiers "
echo "-----------------------------------------"
echo "Fichiers renommes : $nb_renomme"
echo "Fichiers en erreur : $erreur"
echo "-----------------------------------------"
echo "OK, vous pouvez fermer !"
}
## Traitement
if [ "$#" -eq 0 ]; then # si aucun fichier n'est selectionné => mesage d'erreur
zenity --error --title="error" --text="Selectioner au moins 1 fichier"
exit 1
fi
début_numerot
rename_jpeg "$@" | zenity --text-info --title "exif_photos_rename" --width=500 --height=500
Mise en place :
Placer le script exif_photos_rename_v1.1.sh dans le dossier ~/.gnome2/nautilus-scripts, puis le rendre exécutable
$ sudo chmod +x ~/.gnome2/nautilus-scripts/exif_photos_rename_v1.1.sh
Utilisation :
Sélectionner les photos à traiter, puis clic droit / Scripts / exif_photos_rename.sh

Cliquer sur Valider ou modifier le début de numérotation le cas échéant :

Résultat :

NB : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien 
dimanche, décembre 3 2006
Corriger les yeux rouges avec Gimp
Par Taltan le dimanche, décembre 3 2006, 10:21 - Geekerie cultu-libriste
Il y a longtemps que je cherchais un moyen simple de corriger les yeux rouges sur les photos à l'aide Gimp, au hasard de surf je suis bien tombé sur des tutos efficaces mais manuels, comme ici, là, là ou encore celui-la
Et je suis tombé sur le site imagimp.free.fr qui propose un script-fu pour Gimp. Un script-fu est une maniére simple d'automatiser des taches sous Gimp, leur principe, dans leur finalité, est similaire aux macros. Ce script reprends les principes des tutos cités plus haut en automatisant toutes les taches à effectuer, si bien, qu'au final un seul clic de souris suffit. Le script yeuxrouges.scm est à placer dans dans le dossier /usr/share/gimp/2.0/scripts/. Il apparaîtra ensuite dans le menu Script-fu / Photo de Gimp. Il est trivial à utiliser et terriblement efficace, la preuve :
1. Sélectionner la zone à modifier, un zoom important est nécessaire pour bien visualiser les contour, n'hésitez pas à déborder un peu.

2. Appliquer le Script-fu / Photo / Yeux rouges ...

3. Recommencer la même procédure pour le deuxième oeil, voila le résultat à l'échelle 1, tout à fait satisfaisant ...

Pour voir les photos grandeur nature avant et après, c'est par la, cliquez sur la photo ...

samedi, septembre 2 2006
Script de génération automatique de galeries PhpWebGallery
Par Taltan le samedi, septembre 2 2006, 22:06 - Geekerie cultu-libriste
PhpWebGallery est une trés bonne application web PHP (sous licence GPL), qui permet de créer facilement une galerie de photos en ligne. Elle est proposée en standard dans les modules des pages perso de FREE. le hic c'est que la génération de galerie n'est pas automatique et la nomenclature des fichiers est trés précise. Sous Windows on a phpMyVignettes mais rien en GUI sous Linux (à ma connaissance). après quelques recherches j'ai trouvé pas mal de scripts qui réalisent ça mais rien que me colle vraiment, alors j'en ai adapté plusieurs pour avoir un résultat perso :
Script PhpWebGallery_create_v2.0.sh => Génération automatique de galeries au format PhpWebGallery (génération répertoire, miniatures, photos pwg_high, ...), à intégrer dans les nautilus script (s'applique aux fichiers selectionnés, ne les modifie pas ), nécessite le paquet Imagemagick et zenity

Maj : 17/07/2007
- Demande du nom de la galerie
- Crée les dossier $GALERY_NAME , $GALERY_NAME/THUMB_DIR et $GALERY_NAME/REAL_DIR dans le dossier courant
- Traite les images originales et les copie dans le dossier $GALERY_NAME/THUMB_DIR, 3 choix possibles
- Aucun, déplacement de l'original
- Augmente la compression en gardant la résolution originale
- Réduit la résolution originale sans compression à $REAL_L et $REAL_H
- Création des images affichées dans la galerie (à 800x600, variable PICT_L et PICT_H) dans le dossier $GALERY_NAME
- Création des miniatures (à 128x96, variable THUMB_L et THUMB_H) dans le dossier $GALERY_NAME/THUMB_DIR
#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr #
############################################################################################
# Script PhpWebGallery_create_v2.0.sh #
# Licence : GNU / GPL #
############################################################################################
# Inspiré du script Rep2Thumb.sh de Gothico #
# http://forum.phpwebgallery.net/viewtopic.php?id=5522 #
# Inspiré du script gallery.sh de wiloo #
# http://forum.phpwebgallery.net/viewtopic.php?pid=37829 #
############################################################################################
# Script de création de galerie pour PhpWebGallery #
# A intégrer dans les nautilus script (applicable aux fichiers selectionnés) #
# Création de miniatures #
# Création de photos redimensionnées #
############################################################################################
# Dépendances #
############################################################################################
# - Nécessite le paquet imagemagick : http://doc.ubuntu-fr.org/imagemagick #
# - Nécessite le paquet zenity #
# => sudo apt-get install imagemagick zenity #
############################################################################################
# 02/09/06 - v1.0 - Création #
# 17/09/07 - v2.0 - Ajout différents tests avant exécution #
# - Ajout de l'interface zenity #
############################################################################################
########################################################################
## CONFIGURATION ##
########################################################################
# vérifie si imagemagick est installé
which convert 2>/dev/null
if [ $? != 0 ]
then
zenity --error --title="Erreur" --text="La paquet Imagemagick n'est pas installé"
fi
#teste si au moins 1 fichier est selectioné
if [ $# -eq 0 ]; then
zenity --error --title="Erreur" --text="Selectionner au moins 1 fichier"
exit 1
fi
# Chemin complet de la galerie à créer
GALLERY_PATH="`pwd`"
##
# Nom de la galerie
while [ ! "$GALERY_NAME" ] # Réafficher la fenetre tant que l'utilisateur n'a pas fait de choix
do
GALERY_NAME=`zenity --title "Nom de la galerie" --entry --text "Entrer le nom de la galerie"`
if [ $? != 0 ]; then
exit 1
fi
[ $? -ne 0 ] && exit 2 # Annulation
done
# Nom du répertoire à créer pour les miniatures
# ("thumbnail" par défaut dans phpwebgallery)
THUMB_DIR="thumbnail"
# Nom du répertoire à créer pour les images tailles réelles
# ("pwg_high" par défaut dans phpwebgallery)
REAL_DIR="pwg_high"
# Préfixe des miniatures
THUMB_PREFIX="TN-"
## L pour Largeur
## H pour Hauteur
# Taille des photos miniatures
THUMB_L="128"
THUMB_H="96"
# Taille des photos à afficher dans phpwebgallery
PICT_L="800"
PICT_H="600"
# Taille des photos images tailles réelles dans REAL_DIR
REAL_L="1280"
REAL_H="1024"
# Garder les données EXIF ou non
# Avec EXIF => ""
# Sans EXIF => "-strip"
EXIF=""
# Choix du traitement pour l'image en taille réelle
while [ ! "$TRAIT_REAL_CHOICE" ] # Réafficher la fenetre tant que l'utilisateur n'a pas fait de choix
do
TRAIT_REAL_CHOICE=`zenity --list --width=500 --height=200 \
--title="Choisissez le type de traitement pour l'image en taille réelle" \
--column="N°" --column="Description" \
a "Aucun, déplacement de l'original" \
b "Augmente la compression en gardant la résolution originale" \
c "Réduit la résolution originale sans compression"`
###### Choix -> Sortie boucle ######
if [ $? != 0 ]; then
exit 1
fi
[ $? -ne 0 ] && exit 2 # Annulation
done
if [ $TRAIT_REAL_CHOICE == "a" ] # Déplacement de l'original dans le répertoire configuré pour les mages tailles réelles
then
trait_real ()
{
cp "$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
}
fi
if [ $TRAIT_REAL_CHOICE == "b" ] # Augmente la compression en gardant la résolution originale
then
trait_real ()
{
convert -density 72 $EXIF "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
}
fi
if [ $TRAIT_REAL_CHOICE == "c" ] # Réduit la résolition originale sans compression
then
trait_real ()
{
convert $EXIF -resize $REAL_SIZE "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
}
fi
########################################################################
## TRAITEMENT DES IMAGES ##
########################################################################
# Création des miniatures dans le répertoire configuré
mkdir "$GALLERY_PATH/$GALERY_NAME"
mkdir "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR"
mkdir "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR"
numParam=1
erreur=0
nb_param="$#"
for parametre in "$@";
do
# Orientation de la photo
L="`identify "$parametre" | cut -d\ -f3 | cut -dx -f1`"
H="`identify "$parametre" | cut -d\ -f3 | cut -dx -f2`"
if [ $L -gt $H ]
then
THUMB_SIZE="${THUMB_L}x${THUMB_H}"
PICT_SIZE="${PICT_L}x${PICT_H}"
REAL_SIZE="${REAL_L}x${REAL_H}"
else
THUMB_SIZE="${THUMB_H}x${THUMB_L}"
PICT_SIZE="${PICT_H}x${PICT_L}"
REAL_SIZE="${REAL_H}x${REAL_L}"
fi
echo "${numParam}. Traitement de $parametre : .... OK "
# traitement pour l'image en taille réelle
trait_real $parametre
# Création des images affichées dans la galerie
convert -density 72 $EXIF -resize $PICT_SIZE "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre" "$GALLERY_PATH/$GALERY_NAME/$parametre";
# Création des miniatures dans le répertoire configuré pour les miniature
convert -thumbnail $THUMB_SIZE -density 72 "$GALLERY_PATH/$GALERY_NAME/$parametre" "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR/$THUMB_PREFIX$parametre";
let $[numParam += 1]
if [ $numParam -gt "$#" ] ; then
echo "-----------------------------------------"
echo "Fin de traitement : $# fichiers "
echo "-----------------------------------------"
echo "OK, vous pouvez fermer !"
fi
done | zenity --text-info --title "PhpWebGallery_create" --width=500 --height=500
NB : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien 




















