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 :
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
#!/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 :