#1 Le 22/11/2014, à 14:37
- gva_raphael
(bash) script pour redimentioner et signer des photos avec Imagemagick
Je me permet de poser une demande (je n'ai malheureusement pas les compétences pour le faire moi-même) pour un script de la même veine que celui qui fonctionne super bien pour Imagemagick qui puisse faire:
- du redimensionnement à la chaine en %
- choix du format photo
- choix/création de l'emplacement de destination
- enregistrement la nouvelle image avec un Sufix
j'espère que cela intéressera quelques codeurs et je les en remercie d'avance
Super script pour apposer un logo Copyleft ou autre
fonctionne très bien
Ma petite contribution.
Je me dit que ce serait dommage de le garder rien que pour moi...Ça signe des images par dossier entier en insérant une image dans une autre a un endroit qu'on décide.
Le fichier est là : signerenmasse
#!/bin/bash # Auteur : Bruno Billard <bruno.billard@gmail.com> # 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
Dernière modification par gva_raphael (Le 22/11/2014, à 22:47)
Hors ligne
#2 Le 22/11/2014, à 22:44
- gva_raphael
Re : (bash) script pour redimentioner et signer des photos avec Imagemagick
Grâce au script original, j'ai réussi à :
- ajouter un redimensionnement en %
-reprise du % de redimensionnement pour l'inclure dans le nouveau nom
C'est pas grand chose, mais je suis quand même content
Voici le script modifié:
#!/bin/bash
# Auteur :idée originale de Bruno Billard <bruno.billard@gmail.com>,
# modification: pouvoir redimentioner en même temps les images
# 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 et de les redimentioner
# 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
# 5-le pourcentage de redimentionement de l'image composée, qui est repris dans le nom du nouveau fichier à la suite du préfix (nouveau)
#
# 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
# Si le cinquieme argument n'est pas entré en paramêtre on le demande par zenity
if [ $# -le 2 ]
then
size=$(zenity --entry --title="redimentionnement" --text="Entrez le % de redimentionement" --entry-text="50")
else
size=$5
fi
# Il n'y a pas de mauvais cas pour le redimentionement
#
# 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% -resize "$size"% -gravity $grav "$signature" "{}" "${prefix}_${size}_{}" | zenity --progress --pulsate --text="Signature en cours..."
if ! [[ $? ]]
then
exit 2
fi
exit 0
Hors ligne