#!/bin/bash
######################################################################################################
# Taltan - http://www.taltan.fr - ola.taltan_AT_laposte.net                                          #
# http://www.taltan.fr/tag/PhpWebGallery                                                             #
######################################################################################################
# Script PhpWebGallery_create_v3.0.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 l'arborescence                                                                         #
# 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      #
# 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) #
# 26/08/07 - v3.0.1 - Rajout variable compression photos miniatures                                  #
######################################################################################################
# vérifie si imagemagick est installé
which convert >/dev/null
if [ $? != 0 ]
then
	zenity --error --title="Erreur" --text="La paquet Imagemagick n'est pas installé"
	exit 1
fi
######################################################################################################
## CONFIGURATION                                                                                    ##
######################################################################################################
# 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"
#Taux de compression photos galerie
COMPRESS="72"
#Taux de compression photos miniatures
COMPRESS_QUALITY_THUMB="70"
# Garder les données EXIF ou non
# Avec EXIF => ""
# Sans EXIF => "-strip"
EXIF=""

######################################################################################################
## FONCTIONS                                                                                        ##
######################################################################################################
nb_param="$#"

###################################################
## FONCTION NOM DE LA GALERIE                    ##
###################################################
nom_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
	if [ -e "$GALLERY_PATH/$GALERY_NAME" ] ; then # test si dossier existe
		zenity --error --title="Erreur" --text="Le dossier $GALERY_NAME existe déja, veuillez relancer l'application et saisir un autre nom"
		exit 1	
	fi	
	done
}

###################################################
## FONCTION CHOIX DE TRAIT POUR IMAGE TAILLE REEL##
## => créé la fonction trait_real_img adequat    ##
###################################################
choix_trait_real ()
	{
	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_img ()
		{	
		if [ $selection = "image" ]; then # si selection images		
			cp "$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
			if [ $? != 0 ]; then			
				echo "${numParam}. $parametre : Erreur traitement image taille reelle"
				let $[erreur_img += 1] 
			fi
		fi
		if [ $selection = "folder" ] || [ $selection = "none_folder" ]; then # si selection est un dossier	
			cp "$line_image" "$GALLERY_PATH/$GALERY_NAME$line/$REAL_DIR"
			if [ $? != 0 ]; then			
				echo "${numParam}. $file_name : Erreur traitement image taille reelle"
				let $[erreur_img += 1] 
			fi
		fi
		if [ $selection = "none_image" ] ; then # 	
			cp "$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$file_name"
			if [ $? != 0 ]; then			
				echo "${numParam}. $file_name : Erreur traitement image taille reelle"
				let $[erreur_img += 1] 
			fi
		fi		
		}
	fi
	if [ $TRAIT_REAL_CHOICE == "b" ] # Augmente la compression en gardant la résolution originale
		then 
		trait_real_img ()
		{	
		if [ $selection = "image" ]; then # si selection images		
			convert -density $COMPRESS $EXIF "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
			if [ $? != 0 ]; then			
				echo "${numParam}. $parametre : Erreur traitement image taille reelle"
			let $[erreur_img += 1] 
			fi
		fi
		if [ $selection = "folder" ] || [ $selection = "none_folder" ]; then # si selection est un dossier		
			convert -density $COMPRESS $EXIF "$line_image" "$GALLERY_PATH/$GALERY_NAME$line/$REAL_DIR/$file_name"
			if [ $? != 0 ]; then			
				echo "${numParam}. $file_name : Erreur traitement image taille reelle"
				let $[erreur_img += 1] 
			fi
		fi
		if [ $selection = "none_image" ] ; then # 	
			convert -density $COMPRESS $EXIF "$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$file_name"
			if [ $? != 0 ]; then			
				echo "${numParam}. $file_name : Erreur traitement image taille reelle"
				let $[erreur_img += 1] 
			fi
		fi		
		}
	fi
	if [ $TRAIT_REAL_CHOICE == "c" ] # Réduit la résolition originale sans compression
		then 
		trait_real_img ()	
		{	
		if [ $selection = "image" ]; then # si selection images		
			convert $EXIF -resize $REAL_SIZE "$GALLERY_PATH/$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre"
			if [ $? != 0 ]; then			
				echo "${numParam}. $parametre : Erreur traitement image taille reelle"
				let $[erreur_img += 1] 
			fi
		fi
		if [ $selection = "folder" ] || [ $selection = "none_folder" ]; then # si selection est un dossier					
			convert $EXIF -resize $REAL_SIZE "$line_image" "$GALLERY_PATH/$GALERY_NAME$line/$REAL_DIR/$file_name"
			if [ $? != 0 ]; then			
				echo "${numParam}. $line_image : Erreur traitement image taille reelle"
				let $[erreur_img += 1] 
			fi
		fi
		if [ $selection = "none_image" ] ; then # 	
			convert $EXIF -resize $REAL_SIZE "$parametre" "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$file_name"
			if [ $? != 0 ]; then			
				echo "${numParam}. $file_name : Erreur traitement image taille reelle"
				let $[erreur_img += 1] 
			fi
		fi		
		}
	fi
}

###################################################
## FONCTION TRAIT IMAGE GALERIE                  ##
###################################################

trait_gal_img ()
{
	if [ $selection = "image" ] || [ $selection = "none_image" ]; then # si selection images
		convert -density $COMPRESS $EXIF -resize $PICT_SIZE "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre" "$GALLERY_PATH/$GALERY_NAME/$parametre"
		if [ $? != 0 ]; then			
			echo "${numParam}. $parametre : Erreur traitement image galerie"
			let $[erreur_img += 1] 
		fi
	fi
	if [ $selection = "folder" ] || [ $selection = "none_folder" ]; then # si selection est un dossier
		convert -density $COMPRESS $EXIF -resize $PICT_SIZE "$GALLERY_PATH/$GALERY_NAME$line/$REAL_DIR/$file_name" "$GALLERY_PATH/$GALERY_NAME$line/$file_name"
		if [ $? != 0 ]; then			
			echo "${numParam}. $line_image : Erreur traitement image galerie"
			let $[erreur_img += 1] 
		fi
	fi

}

###################################################
## FONCTION TRAIT IMAGE MINIATURE                ##
###################################################
trait_thumb_img ()
{
	if [ $selection = "image" ] || [ $selection = "none_image" ]; then  # si selection images	
		convert -thumbnail $THUMB_SIZE -density $COMPRESS -quality $COMPRESS_QUALITY_THUMB "$GALLERY_PATH/$GALERY_NAME/$parametre" "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR/$THUMB_PREFIX$parametre"
		if [ $? != 0 ]; then			
			echo "${numParam}. $parametre : Erreur traitement image miniature"
			let $[erreur_img += 1]
		fi
	fi
	if [ $selection = "folder" ] || [ $selection = "none_folder" ]; then  # si selection est un dossier
		convert -thumbnail $THUMB_SIZE -density $COMPRESS -quality $COMPRESS_QUALITY_THUMB "$GALLERY_PATH/$GALERY_NAME$line/$file_name" "$GALLERY_PATH/$GALERY_NAME$line/$THUMB_DIR/$THUMB_PREFIX$file_name"
		if [ $? != 0 ]; then			
			echo "${numParam}. $parametre : Erreur traitement image miniature"
			let $[erreur_img += 1]
		fi
	fi
}

###################################################
## FONCTION ORIENTATION DE LA PHOTO              ##
###################################################
orientation_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 [ $? != 0 ]; then			
			echo "${numParam}. $parametre . Erreur orientation"
			let $[erreur_img += 1] # incrémentation du compteur d'erreur
	fi
	if [ "$L" -gt "$H" ]
		then # si horizntale
			THUMB_SIZE="${THUMB_L}x${THUMB_H}"
			PICT_SIZE="${PICT_L}x${PICT_H}"
			REAL_SIZE="${REAL_L}x${REAL_H}"
		else # si verticale
			THUMB_SIZE="${THUMB_H}x${THUMB_L}"
			PICT_SIZE="${PICT_H}x${PICT_L}"
			REAL_SIZE="${REAL_H}x${REAL_L}"
	fi
}

###################################################
## FONCTION TEST DE LA SELECTION                 ##
## => FICHIER OU DOSSIER                         ##
###################################################
test_selection ()
{
	# si aucun parametre
	if [ "$nb_param" -eq 0 ]; then
		selection="none"
	fi
	# si un paramatre, test si c'est un dossier
	if [ "$nb_param" -eq 1 ]; then
		if [ -d "$@" ] ; then
			selection="folder" # c'est un dossier
		else # si c'est un fichier , test si c'est une image JPEG
			file "$@" | grep -i "JPEG image data" > /dev/null
			if [ $? != 0 ]; then			
				zenity --error --title="Erreur" --text="Vous ne devez selectionner que des images JPEG ou un seul dossier"
				exit 1
			fi
			selection="image" # c'est une image JPEG	
		fi
	fi
	# si plus de un parametre , test si c'est tous des images jpeg
	if [ "$nb_param" -gt 1 ]; then
		for arg in "$@"
		do
			if [ -d "$arg" ] ; then # si il y a un dossier dans la liste => erreur
				zenity --error --title="Erreur" --text="Vous ne devez selectionner que des images JPEG ou un seul dossier"
				exit 1
			fi
			file "$arg" | grep -i "JPEG image data" > /dev/null # si un fichier n'est pas une image JPEG => erreur
			if [ $? != 0 ]; then			
				zenity --error --title="Erreur" --text="Vous ne devez selectionner que des images JPEG ou un seul dossier"
				exit 1
			fi
		done
		selection="image"
	fi
}

###################################################
## FONCTION TRAIT SI SELECTION VIDE              ##
###################################################
fonc_trait_sel_none ()
{
	echo "-----------------------------------------------------------------------------------------------------------"
	echo "I N I T I A L I S A T I O N. . . . . . . . . ."
	echo "-----------------------------------------------------------------------------------------------------------"
	sleep 1	
	zenity --info --text="Dans la boite de dialogue suivante, selectionner le type de traitement voulu ..."	
	while [ ! "$TRAIT_SEL_CHOICE" ] # Réafficher la fenetre tant que l'utilisateur n'a pas fait de choix
	do
		TRAIT_SEL_CHOICE=`zenity --list --width=500 --height=200 \
			--title="Choisissez le type de traitement" \
			--column="Choix" --column="Description" \
			a "Sur un dossier, récursivement" \
			b "Sur des images"`
		# Choix -> Sortie boucle
		if  [ $? != 0 ]; then
			exit 1
		fi
		[ $? -ne 0 ] && exit 2 # Annulation
	done		

	if [ $TRAIT_SEL_CHOICE == "a" ]; then # Si selection dossier
		zenity --info --text="Dans la boite de dialogue suivante, sélectionnez le dossier à traiter ..."
		selec=`zenity --file-selection --directory --title="Sélectionnez le dossier à traiter"`
		case $? in
  			0)
			;;
  			1) # test si clic sur annule
				zenity --error --title="Erreur" --text="AUCUN DOSSIER SELCTIONNÉ : Veuillez relancer l'application et selectionner un dossier à traiter ..."
				echo "AUCUN DOSSIER SELCTIONNE : Veuillez relancer l'application et selectionner un dossier à traiter ..."
				echo "-------------------------------------------------"		
				echo "Vous devez FERMER et relancer l'application"			
				exit 1;;
  			-1) # si une  erreur inattendue s'est produite
				zenity --error --title="Erreur" --text="AUCUN DOSSIER SELCTIONNÉ : Veuillez relancer l'application et selectionner un dossier à traiter ..."
				echo "AUCUN DOSSIER SELCTIONNE : Veuillez relancer l'application et selectionner un dossier à traiter ..."
				echo "-------------------------------------------------"		
				echo "Vous devez FERMER et relancer l'application"			
				exit 1;;
		esac
		selection="none_folder"
		fonc_trait_sel_dossier $selec
	fi	
	if [ $TRAIT_SEL_CHOICE == "b" ]; then # Si selection fichier
	zenity --info --text="Dans la boite de dialogue suivante, sélectionnez le photos à traiter ..."		
	selec=`zenity --file-selection --multiple --separator=: --title="Sélectionnez les photos à traiter"`
		case $? in
  			0)
			;;
  			1) # test si clic sur annule
				zenity --error --title="Erreur" --text="AUCUN FICHIER SELCTIONNÉ : Veuillez relancer l'application et selectionner des photos ..."
				echo "AUCUN FICHIER SELCTIONNE :  Veuillez relancer l'application et selectionner des photos ..."
				echo "-------------------------------------------------"		
				echo "Vous devez FERMER et relancer l'application"			
				exit 1;;
  			-1) # si une  erreur inattendue s'est produite
				zenity --error --title="Erreur" --text="AUCUN FICHIER SELCTIONNÉ :  Veuillez relancer l'application et selectionner des photos ..."
				echo "AUCUN FICHIER SELCTIONNE :  Veuillez relancer l'application et selectionner des photos ..."
				echo "-------------------------------------------------"		
				echo "Vous devez FERMER et relancer l'application"			
				exit 1;;
		esac
		selection="none_image"
		FILE1="`echo $selec | cut -d: -f1`"
		GALLERY_PATH="`dirname \"$FILE1\"`"
		nom_galerie	
		mkdir "$GALLERY_PATH/$GALERY_NAME"
		mkdir "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR"
		mkdir "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR"
		i=1 # initialisation numéro de paramètre
		erreur=0 # initialisation compteur erreur de traitement
		choix_trait_real
		nb_file=`echo "$selec" | grep -o ":" | wc -l`
		let $[nb_file += 1]		
		while [ $i -le $nb_file ] 
		do		
			erreur_img=0 # initialisation compteur erreur pour l'image			
			parametre=`echo "$selec" | cut -d: -f${i}`
			file_name="`basename \"$parametre\"`" # initialisation nom de l'image
			orientation_photo $parametre # orientation de la photo
			trait_real_img $parametre # traitement pour l'image en taille réelle
			parametre="$file_name"
			trait_gal_img $parametre # Création des images affichées dans la galerie		
			trait_thumb_img $parametre # Création des miniatures	
			if [ $erreur_img != 0 ]; then # si compteur erreur différent de 0		
				echo "WARNING"		
				echo "${i}. $parametre . ERREUR de traitement"
				let $[erreur += 1]
			else # sinon aucune erreur
				echo "${i}. Traitement de $parametre : .... OK "
			fi
			let $[i += 1]		
		done
		let $[i -= 1]		
		nb_trait=$(( $i - $erreur )) # création de la variable nombre de fichiers traités
		echo "-----------------------------------------------------------------------------------------------------------"
		echo "Fin de traitement : $i fichiers "
		echo "-----------------------------------------------------------------------------------------------------------"
		echo "Fichiers OK : $nb_trait"
		echo "Nombres d'erreurs : $erreur"
		echo "-----------------------------------------------------------------------------------------------------------"
		echo "Galerie : $GALLERY_PATH/$GALERY_NAME"		
		echo "-----------------------------------------------------------------------------------------------------------"
		echo "OK, vous pouvez fermer !"
		zenity --info --text="OK, vous pouvez fermer ! ..."
	fi
}

###################################################
## FONCTION TRAIT SI SELECTION = DOSSIER         ##
###################################################
fonc_trait_sel_dossier ()
{
	expr "$selec" : '.*\(.$\)' | grep / > /dev/null # test si le caractère "/" est à la fin du path du dossier selectioné
		if [ $? = 0 ]; then			
		zenity --error --title="Erreur" --text="CARACTÈRE \"/\" À LA FIN DU PATH DU DOSSIER SELECTIONNÉ : veuillez relancer l'application et selectionner un path sans le caractère \"/\" à la fin ..."
		echo "CARACTERE \"/\" A LA FIN DU PATH DU DOSSIER SELECTIONNE : veuillez relancer l'application et selectionner un path sans le caractere \"/\" a la fin ..."		
		echo "-------------------------------------------------"		
		echo "Vous devez FERMER et relancer l'application"		
		exit 1
	fi	
	if [ $selection = "none_folder" ]; then 
		absolute="$selec"
	else
		absolute="`pwd`/$selec"	
	fi
	if [ "$selection" = "folder" ]; then
		echo "-----------------------------------------------------------------------------------------------------------"	
		echo "I N I T I A L I S A T I O N. . . . . . . . . ."
		echo "-----------------------------------------------------------------------------------------------------------"
	fi	
	sleep 1
	zenity --info --text="Dans la boite de dialogue suivante, sélectionnez un dossier dans lequel la galerie sera créée ..."	
	GALLERY_PATH=`zenity --file-selection --directory --title="Sélectionnez un dossier de destination"`
	case $? in
  		0)
		if [ "$GALLERY_PATH" = "$absolute" ] ; then # test si dossier selectionné = dossier à traiter						
			zenity --error --title="Erreur" --text="DOSSIER SELCTIONNÉ = DOSSIER À TRAITER : Vous ne pouvez pas selectionner le dossier que vous voulez traiter, veuillez relancer l'application et selectionner un autre dossier ..."
			echo "DOSSIER SELCTIONNE = DOSSIER A TRAITER : Vous ne pouvez pas selectionner le dossier que vous voulez traiter, veuillez relancer l'application et selectionner un autre dossier ..."
			echo "-------------------------------------------------"		
			echo "Vous devez FERMER et relancer l'application"			
			exit 1	
		fi;;
  		1) # test si clic sur annule
			zenity --error --title="Erreur" --text="AUCUN DOSSIER SELCTIONNÉ : Vous devez selectionner un dossier destination, veuillez relancer l'application et selectionner un dossier ..."
			echo "AUCUN DOSSIER SELCTIONNE : Vous devez selectionner un dossier destination, veuillez relancer l'application et selectionner un dossier ..."
			echo "-------------------------------------------------"		
			echo "Vous devez FERMER et relancer l'application"			
			exit 1;;
  		-1) # si une  erreur inattendue s'est produite
			zenity --error --title="Erreur" --text="AUCUN DOSSIER SELCTIONNÉ : Vous devez selectionner un dossier destination, veuillez relancer l'application et selectionner un dossier ..."
			echo "AUCUN DOSSIER SELCTIONNE : Vous devez selectionner un dossier destination, veuillez relancer l'application et selectionner un dossier ..."
			echo "-------------------------------------------------"		
			echo "Vous devez FERMER et relancer l'application"			
			exit 1;;
	esac
	nom_galerie
	choix_trait_real	
	numParam=1 # initialisation numéro de paramètre
	erreur=0 # initialisation compteur erreur de traitement
	nb_photos_trait=0 # initialisation compteur photos traités	
	# clonnage de l'arbo des dossier (si il contient des photos) dans le dossier de la galerie		
	nb_folder_path=`echo "$absolute" | grep -o "/" | wc -l`
	let $[nb_folder_path += 1]
	last_folder_name=`echo "$absolute" | cut -d/ -f${nb_folder_path}` # extraction du dernier dossier de la selection en chemin absolu
	echo "/" > /tmp/liste.temp	
	find "$absolute" -type d | sed s/"$last_folder_name"/^/g | cut -d^ -f2 | sed '1d' >> /tmp/liste.temp # création fichier temp listant tous le sous dossier du dossier selectionné, path relatif
	mkdir "$GALLERY_PATH/$GALERY_NAME"	
	while read line # pour chaque dossier et sous-dossier (pour le dossier selectionné)	
	do    		
		fichier=`find "${absolute}${line}" -maxdepth 1 -type f` # vérifie si des fichiers existent
		find "${absolute}${line}" -maxdepth 1 -type f > /tmp/fichiers.temp # création fichier temp listant tous les fichiers du dossier courant
		if [ "$fichier" != "" ]; then # si des fichiers existent, on traite, sinon on ignore
			nb_fichier=0 # initialisation compteur nombre de fichiers		
			nb_image=0 # initialisation compteur nombre de photos			
			while read fichier_dir # compteur pour fichiers du dossier
			do
				file "$fichier_dir" | grep -i "JPEG image data" > /dev/null
				if [ $? = 0 ]; then			
					let $[nb_image += 1] # incrémentation compteur photos
				else 
					let $[nb_fichier += 1] # incrémentation compteur fichiers				
				fi			
			done < /tmp/fichiers.temp
			if [ $nb_image -gt 0 ]; then # si il y a des images, on les traite, si dossier vide on ignore
				mkdir -p "$GALLERY_PATH/$GALERY_NAME$line"			
				mkdir -p "$GALLERY_PATH/$GALERY_NAME$line/$THUMB_DIR"
				mkdir -p "$GALLERY_PATH/$GALERY_NAME$line/$REAL_DIR"
				find "${absolute}${line}" -maxdepth 1 -type f > /tmp/images.temp # création fichier temp listant tous les fichiers du dossier courant
				while read line_image
				do
					file "$line_image" | grep -i "JPEG image data" > /dev/null # test si c'est une image JPEG					
					if [ $? != 0 ]; then # si ce n'est pas une image JPEG			
						let $[nb_fichier_trait += 1] # incrémente compteur fichiers traités, et ne le traite pas						
					else 
						erreur_img=0 # initialisation compteur erreur pour l'image				
						file_name="`basename \"$line_image\"`" # initialisation nom de l'image
						parametre="$line_image"	# correspondance de nom de variable pour les fonctions								
						orientation_photo $parametre				
						trait_real_img $parametre
						trait_gal_img $parametre
						trait_thumb_img $parametre
						if [ $erreur_img != 0 ]; then # si compteur erreur différent de 0		
							echo "WARNING"		
							echo "${numParam}. $parametre . ERREUR de traitement"
							let $[erreur += 1]
						else # sinon aucune erreur
							echo "${numParam}. Traitement de $file_name : .... OK "
						fi
						let $[numParam += 1] # incrémente compteur numéro de paramètre
						let $[nb_photos_trait += 1] # incrémente compteur de photos traités
						let $[nb_fichier_trait += 1] # incrémente compteur de fichiers traités				
					fi					
				done < /tmp/images.temp
			fi		
		fi		
	done < /tmp/liste.temp
	nb_no_photos=$(( $nb_fichier_trait - $nb_photos_trait )) # création de la variable nombre de fichiers traités
	nb_trait=$(( $nb_fichier_trait - $erreur )) # création de la variable nombre de fichiers traités
	echo "-----------------------------------------------------------------------------------------------------------"		
	echo "Fin de traitement : $nb_fichier_trait fichiers "
	echo "-----------------------------------------------------------------------------------------------------------"
	echo "Nombre de fichiers photos : $nb_photos_trait"
	echo "Nombre d'erreurs de traitement : $erreur"
	echo "Nombre de fichiers non photos : $nb_no_photos"
	echo "-----------------------------------------------------------------------------------------------------------"
	echo "Galerie : $GALLERY_PATH/$GALERY_NAME"		
	echo "-----------------------------------------------------------------------------------------------------------"
	echo "OK, vous pouvez fermer !"
	zenity --info --text="OK, vous pouvez fermer ! ..."
	rm -f /tmp/liste.temp
	rm -f /tmp/images.temp
	rm -f /tmp/fichiers.temp
}

###################################################
## FONCTION TRAIT SI SELECTION = PHOTOS          ##
###################################################
fonc_trait_sel_jpeg ()
{
	echo "-----------------------------------------------------------------------------------------------------------"	
	echo "I N I T I A L I S A T I O N. . . . . . . . . ."
	echo "-----------------------------------------------------------------------------------------------------------"	
	sleep 1	
	nom_galerie	
	mkdir "$GALLERY_PATH/$GALERY_NAME"
	mkdir "$GALLERY_PATH/$GALERY_NAME/$THUMB_DIR"
	mkdir "$GALLERY_PATH/$GALERY_NAME/$REAL_DIR"
	numParam=1 # initialisation numéro de paramètre
	erreur=0 # initialisation compteur erreur de traitement
	choix_trait_real
	for parametre in "$@"
	do
		erreur_img=0 # initialisation compteur erreur pour l'image	
		orientation_photo $parametre # orientation de la photo	
		trait_real_img $parametre # traitement pour l'image en taille réelle
		trait_gal_img $parametre # Création des images affichées dans la galerie		
		trait_thumb_img $parametre # Création des miniatures	
		if [ $erreur_img != 0 ]; then # si compteur erreur différent de 0		
			echo "WARNING"		
			echo "${numParam}. $parametre . ERREUR de traitement"
			let $[erreur += 1]
		else # sinon aucune erreur
			echo "${numParam}. Traitement de $parametre : .... OK "
		fi	
		let $[numParam += 1]
	done
	nb_trait=$(( $nb_param - $erreur )) # création de la variable nombre de fichiers traités
	echo "-----------------------------------------------------------------------------------------------------------"		
	echo "Fin de traitement : $# fichiers "
	echo "-----------------------------------------------------------------------------------------------------------"
	echo "Fichiers OK : $nb_trait"
	echo "Nombres d'erreurs : $erreur"
	echo "-----------------------------------------------------------------------------------------------------------"
	echo "Galerie : $GALLERY_PATH/$GALERY_NAME"		
	echo "-----------------------------------------------------------------------------------------------------------"
	echo "OK, vous pouvez fermer !"
	zenity --info --text="OK, vous pouvez fermer ! ..."
}

######################################################################################################
## CREATION GALERIE - TRAITEMENT DES PHOTOS                                                         ##
######################################################################################################
test_selection "$@"

###################################################
## TRAITEMENT => SELECTION VIDE                  ##
###################################################
if [ $selection = "none" ]; then
	fonc_trait_sel_none "$selec" | zenity --text-info --title "PhpWebGallery_create" --width=600 --height=500
fi
###################################################
## TRAITEMENT => SELECTION DOSSIERS              ##
###################################################

if [ $selection = "folder" ]; then
	selec="$@"
	fonc_trait_sel_dossier "$selec" | zenity --text-info --title "PhpWebGallery_create" --width=600 --height=500
fi

###################################################
## TRAITEMENT => SELECTION JPEG                  ##
###################################################

if [ $selection = "image" ]; then
	GALLERY_PATH="`pwd`" # Chemin complet de la galerie racine à créer
	fonc_trait_sel_jpeg "$@" | zenity --text-info --title "PhpWebGallery_create" --width=600 --height=500	
fi
