#!/bin/bash # Auteur : Bruno Billard # Ce script est mis a votre disopsition sous licence GPL # Plus d'info ici : http://www.gnu.org/licenses/gpl.txt # Ce script permet de signer facilement un nombre important de photos # Il prend en argument : # 1- Le dossier contenant les images a signer # 2- Le fichier image de la signature (la transparance est respectée à l'insertion) # 3- Un préfix pour les images signées (pour ecraser les images entrer un prefix vide) # 4- L'emplacement de la signature parmis les choix suivant : # Bas_Droite, Bas_Gauche, Haut_Droite, Haut_Gauche, Bas_Milieu, Haut_Milieu, Droite_Milieu, Gauche_Milieu # # On peut omettre les parametres a partir de la droite. # Les parametres omis sont demandé graphiquement par des boites de dialogues successives. # # La valeur de retour est : # O si tout s'est bien passé # 1 si un parametre est détecté mauvais # 2 si la commande de signature se passe mal # # Si le premier argument n'est pas entré en paramêtre on le demande par zenity if [ $# -le 1 ] then img_dir=$(zenity --file-selection --directory --separator="\n" --title="Choisir le dossier d'images a signer...") else img_dir=$1 fi # Test de validité du premier argument if ! [[ -d $img_dir ]] then echo "Le dossier $img_dir n'est pas un dossier" exit 1 fi # # Si le deuxieme argument n'est pas entré en paramêtre on le demande par zenity if [ $# -le 2 ] then signature=$(zenity --file-selection --title="Choisir le fichier image de la signature...") else signature=$2 fi # Test de validité du deuxieme argument if ! { file $signature | grep -q "image" ; } then echo "le fichier $signature n'est pas une image" exit 1 fi # # Si le troisieme argument n'est pas entré en paramêtre on le demande par zenity if [ $# -le 2 ] then prefix=$(zenity --entry --title="Prefixe..." --text="Entrez le prefixe pour les fichier signés" --entry-text="signe_") else prefix=$3 fi # Il n'y a pas de mauvais cas pour le préfix # # Si le quatrieme argument n'est pas entré en paramêtre on le demande par zenity if [ $# -le 2 ] then grav=$(zenity --list --title="Placement de la signature..." --text="Selectionez l'emplacement de la signature :" --radiolist --column="" --column="" TRUE Bas_Droite FALSE Bas_Gauche FALSE Haut_Droite FALSE Haut_Gauche FALSE Bas_Milieu FALSE Haut_Milieu FALSE Droite_Milieu FALSE Gauche_Milieu ) else grav=$4 fi # Test de validité du quatrieme argument case $grav in Bas_Droite) grav=SouthEast ;; Bas_Gauche) grav=SouthWest ;; Haut_Droite) grav=NorthEast ;; Haut_Gauche) grav=NorthWest ;; Bas_Milieu) grav=South ;; Haut_Milieu) grav=North ;; Droite_Milieu) grav=East ;; Gauche_Milieu) grav=West ;; defalut) echo "L'emplacement de la signature n'est pas bon..." ; exit 1 ;; esac # # On se place dans le dossier des images cd "$img_dir" # La comande de signature # find pour trouver les fichiers # sed pour retirer le "./" du début du retour de find # xarg pour faire passer le pipe a une commande # composite pour signer les photos # zenity pour la barre de progression find ./ -maxdepth 1 \( -iname '*.jpg' -o -iname '*.png' -o -iname '*.gif' \) | sed "s/^.\///"|xargs -L1 -I {} composite -dissolve 100% -gravity $grav "$signature" "{}" "${prefix}{}" | zenity --progress --pulsate --text="Signature en cours..." if ! [[ $? ]] then exit 2 fi exit 0