Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

mini_584151test.jpg


Super script pour apposer un logo Copyleft ou autre smile
fonctionne très bien

Fake a écrit :

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