Bonjour la communauté Développez.com !
J'ai réalisé un script qui me permet de générer une perspective d'image. J'utilise le superbe script de Fred, le 3DRotate.
Seulement, le temps d’exécution est assez élevé (légèrement supérieur à 10 secondes)... Je cherche donc un moyen d'optimiser le temps d'execution de mon script, pour éviter une attente si longue.
Voici le contenu de mon script.sh :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #!/bin/bash
if [ -z "$8" ]
then
########### $0 #### $1 ############ $2 ########## $3 ### $4 ### $5 ###### $6 ###### $7 ###### $8 #####
echo "usage: $0 image_source.jpg image_finale.jpg x_max y_max y_max-10% y_max-20 y_max*10% script_path"
exit 1
fi
#Création du Raising border sur le Front
convert $1 -fill gray50 -colorize 100% -raise 10 -normalize -blur 0x8 "$1"_filled.jpg
convert $1 "$1"_filled.jpg -compose hardlight -composite "$1"_raised.jpg
#Création du Spine et raising border
convert -size 80x$4 gradient:black-gray30 "$1"_spine.jpg
convert "$1"_spine.jpg +raise 5 "$1"_spine.jpg
#Assemblement du Spine + Front et effet 3D Perspective
#convert -virtual-pixel transparent \( "$1"_raised.jpg -matte +distort Perspective "0,0,0,0 0,$4,0,$4 $3,0,$3,$7 $3,$4,$3,$5" \) \( "$1"_spine_raised.jpg -matte +distort Perspective "0,0,-80,30 80,0,0,0 0,$4,-80,$6 80,$4,0,$4" \) -background transparent -layers merge -sharpen 1 +repage -bordercolor transparent -border 80x30 "$2".png
"$8"/3Drotate pan=20 bgcolor=transparent auto=out "$1"_raised.jpg "$2".png
"$8"/3Drotate pan=-20 bgcolor=transparent auto=out "$1"_spine.jpg "$2"_spine.png
convert "$2".png -background white -bordercolor none -border 80x0 "$2".png
convert "$2".png -resize "$3"x"$4"\! "$2".png
convert "$2"_spine.png -resize "$3"x"$4" "$2"_spine.png
composite -geometry +3+3 "$2"_spine.png "$2".png "$2".png
convert "$2".png -background transparent -bordercolor none -border 80x30 "$2".png
#Ajout de l'ombrage autour du Canvas final
convert "$2".png \( +clone -background gray -shadow 70x5+5+5 \) +swap -background white -layers merge +repage $2
#resize à la taille originale
convert $2 -background white -resize "$3"x"$4"\! $2
#Remove des images intermédiaires
rm "$1"_filled.jpg
rm "$1"_raised.jpg
rm "$1"_spine.jpg
rm "$2"_spine.png
rm "$2".png |
J'imagine que je peux regrouper plusieurs commandes en une seule, j'ai essayé mais je n'ai malheureusement pas réussi ...
Merci à tous ceux qui pourront m'aider !