Taltan.blog.bkp

Keyword - PhpWebGallery

Fil des billets - Fil des commentaires

dimanche, août 26 2007

Script PhpWebGallery_create maj v3.0.1

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 :

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

  1. Demande du nom de la galerie
  2. Crée les dossier nécessaire dans le dossier courant
  3. Traite les images originales et les copie, 3 choix possibles
    1. Aucun, déplacement de l'original
    2. Augmente la compression en gardant la résolution originale
    3. Réduit la résolution originale sans compression
  4. Création des images affichées dans la galerie
  5. 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

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

lundi, juillet 23 2007

Script v3 de génération automatique de galeries PhpWebGallery

Pour faire suite à ces billet :

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 :

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 :

mercredi, juillet 18 2007

Script v2 de génération automatique de galeries PhpWebGallery

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
  • 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 :

pwg_create00.png

Renseigner le nom de la galerie, Galerie_test :

pwg_create01.png

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é :

pwg_create02.png

Une fois le traitement terminé :

pwg_create03.png

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 :

mardi, juillet 17 2007

Script de renommage de photos selon les données EXIF

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 :

$ 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 exif_photos_rename_01.png

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

Résultat :

exif_photos_rename_02.png

exif_photos_rename_03.png

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 ;)

samedi, septembre 2 2006

Script de génération automatique de galeries PhpWebGallery

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

pwg_script.png

Maj : 17/07/2007

  1. Demande du nom de la galerie
  2. Crée les dossier $GALERY_NAME , $GALERY_NAME/THUMB_DIR et $GALERY_NAME/REAL_DIR dans le dossier courant
  3. Traite les images originales et les copie dans le dossier $GALERY_NAME/THUMB_DIR, 3 choix possibles
    1. Aucun, déplacement de l'original
    2. Augmente la compression en gardant la résolution originale
    3. Réduit la résolution originale sans compression à $REAL_L et $REAL_H
  4. Création des images affichées dans la galerie (à 800x600, variable PICT_L et PICT_H) dans le dossier $GALERY_NAME
  5. 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 ;)