#!/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/07/07 - v2.0 - Ajout différents test avants éxécution                                           #
#                 - Ajout de l'interface zenity                                                      #
# 21/07/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
