Script de génération automatique de galeries PhpWebGallery
Par Taltan le samedi, septembre 2 2006, 22:06 - Linux - Lien permanent
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 










Commentaires
Salut!
je l'ai modifié, pour que les miniature ne comportent pas de préfixe, et j'ai aussi diminué la taille des photos de la galerie.

Je suis très intéressé par ce script
En réalité ,je l'utilise depuis pas mal de temps
Ma question est: comment faire pour garder la même taille de photo (640x480), mais les rendre plus légère, quitte à perdre de la qualité? Quelle ligne dois-je modifier, et de quelle manière?
Merci beaucoup
Il faut remplacer le bloc :
# Augmente la compression en gardant la résolution originale
# convert -density 72 $EXIF "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$new_name";
# Réduit la résolition originale à REAL_SIZE sans compression
convert $EXIF -resize $REAL_SIZE "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$new_name";
# Création des images affichées dans la galerie
convert -density 72 $EXIF -resize $PICT_SIZE "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$new_name" "$GALLERY_PATH/$GALERY_NAME/$new_name";
# Création des miniatures dans le répertoire configuré pour les miniature
convert -thumbnail $THUMB_SIZE -density 72 "$GALLERY_PATH/$GALERY_NAME/$new_name" "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR/$THUMB_PREFIX$new_name";
par le bloc
# Augmente la compression en gardant la résolution originale
convert -density 72 $EXIF "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$new_name";
# Réduit la résolition originale à REAL_SIZE sans compression
# convert $EXIF -resize $REAL_SIZE "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$new_name";
# Création des images affichées dans la galerie
convert -density 72 $EXIF -resize $PICT_SIZE "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$new_name" "$GALLERY_PATH/$GALERY_NAME/$new_name";
# Création des miniatures dans le répertoire configuré pour les miniature
convert -thumbnail $THUMB_SIZE -density 72 "$GALLERY_PATH/$GALERY_NAME/$new_name" "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR/$THUMB_PREFIX$new_name";
et jouer sur le paramètre 72 (plus élevé = plus de compression)
Salut, c'est encore moi
J'utilise Kubuntu...pourrais-tu me dire ou dois-je placer ce script pour qu'il fonctionne avec Konqueror ?
Il faut apparement passer par le service-menu, mais quand j'ai essayé de le faire, avec plusieurs photos séléctionnée, il m'a fait planter l'ordi, après avoir saturé la ram :p
Sinon, est-il possible de l'executer via Konsole? Quand j'ai essayé, il ne fait que créer les différents dossier, sans rien redimensionner (puisque aucune photos n'est choisies). Comment faire en sorte de passer en arguments toutes les photos du dossier dans lequel le script est utilisé?
Merci beaucoup!
Ola
Je connais pas vraiment Konkeror, donc je pourrai pas t'aider la dessus
Pour exécuter le script manuellement en passant les photos en argument, il faut :
$ cd "le dossier qui contient les photos"
$ PhpWebGallery_create.sh * ------------> (si le dossier ne contient que des photos)
ou
$ PhpWebGallery_create.sh *.jpg ------------> (si le dossier ne contient pas que des photos et que leur extension est jpg, attention à la casse)
Il faut bien sure rendre le script exécutable en amont et le mettre dans le path, par exemple
$ sudo cp PhpWebGallery_create.sh /bin
$ sudo chmod 775 /bin/PhpWebGallery_create.sh
Merci, c'est une affaire qui roule !
question qualité :
-quality 75
(75 est une valeur correcte voir minimale en rapport qualité/poid)
Ceci en plus de -density qui me semble être la résolution de l'image (par exemple 72dpi "point par pouce")
/me vote super script @ très pratique et pas seulement pour phpwebgallery