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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
| #!/bin/sh
# Auteur : Blondin
# D'après un script de : Julien Leloup http://leloup.org
# Version : 0.1
# Date : 31/08/2011
# Historique :
# - 0.1 - 31/08/2011 - Reprise du script et adaptation au besoin de son auteur
# License : GNU GPL ver 3.0
# Dépendances :
# - zenity
# - imagemagick
# Installation :
# - Pré-requis : zenity et imagemagick doivent être installés
# - Rendre ce script exécutable
# - Déposer ce script dans le dossier $HOME/.gnome2/nautilus-scripts
# Utilisation : Accès par bouton droit / Scripts / Redimensionner pour google+ après sélection d'une ou plusieurs images
# Fonctions :
# - Redimensionnement d'images par lot avec comme taille maximale 2048x2048 en conservant le ratio
# - Choix de la sortie (écrasement, préfixe, sous-répertoire "Google+")
# - Se base sur le type mime pour ne traiter une selection contenant uniquement des images
# - Supprime les données EXIF quelque soit la taille de l'image
# Script :
# Teste si l'utilisateur a cliqué sur annuler
f_annuler() {
if [ "$?" != 0 ] ; then
# On quitte le programme
zenity --error --title="Redimensionner image(s)" --text="Vous avez annulé l'opération de redimensionnement."
exit
fi
}
# Teste si au moins un fichier a été choisi
if [ $# -eq 0 ]; then
zenity --error --title="Redimensionner image(s)" --text="Vous devez sélectionner au moins une image à redimensionner."
exit 1
fi
# Verification si tous les fichiers sont bien des images
fichier_courant="$#"
for fichier_courant
do
# Vérification de son type mime
mime=`file -bi "$fichier_courant"`
fichier_est_image=`echo "$mime" | grep image | wc -l`
# Si les fichiers ne sont pas tous des images...
if [ ! $fichier_est_image -eq 1 ]; then
zenity --error --title="Redimensionner image(s)" --text="Nous ne pouvons redimmensionner QUE des images."
# ...On quitte le programme
exit 1
fi
done
# On affiche une liste des méthodes proposées
while [ ! "$sortie" ]; do
# Choix de la méthode
sortie=`zenity --list --radiolist --width=500 --title="Redimensionner image(s)" --text="Sélectionnez la méthode" --column="" --column="" FALSE "Remplacer les images existantes" \ FALSE "Créer de nouvelles images avec un préfixe" \ FALSE "Redimensionner les images dans un sous-repertoire \"Google+\"" --hide-header`
# Si clic sur annuler
f_annuler
# Si clic sur valider sans avoir choisi de valeur
if [ ! "$sortie" ]; then
zenity --error --title="Redimensionner image(s)" --text="Vous devez choisir une méthode !"
f_valeur
fi
done
# Si on choisit d'écraser les images existantes, demande de confirmation
if [ "$sortie" = "Remplacer les images existantes" ] ; then
zenity --question --text="Vos images vont être remplacées \ Etes-vous certain de vouloir continuer ?"
# Si non, on annule
f_annuler
fi
# Si on choisit d'utiliser un préfixe
while [ ! "$prefixe" ]; do
if [ "$sortie" = "Créer de nouvelles images avec un préfixe" ] ; then
prefixe=`zenity --entry --title="Redimensionnement image(s)" --text="Choisissez un préfixe:" --entry-text "" `
# Si clic sur annuler
f_annuler
# Si clic sur valider sans avoir choisi de valeur
if [ ! "$prefixe" ]; then
zenity --error --title="Redimensionner image(s)" --text="Vous devez choisir une option !"
f_valeur
fi
# Sinon on continue
else
break
fi
done
# Si on choisit d'utiliser un sous-dossier "Google+"
if [ "$sortie" = "Redimensionner les images dans un sous-repertoire \"Google+\"" ]; then
repertoire="Google+"
# Si le dossier n'existe pas, il sera créé après confirmation
if [ ! -d "$repertoire" ]; then
zenity --question --text="Le sous-répertoire \"Google+\" n'existe pas. Voulez-vous le créer ?"
# Si non, on annule
f_annuler
# Création du dossier
mkdir "$repertoire"
fi
fi
# Compteur pour barre de progression
compteur=0
pourcentage=0
# Comptage du nombre total de fichiers sélectionnées
total=`file $* | wc -l`
# Les variables du redimensionnement
# Dimensions maxi
dimensions_max="2048x2048"
# Qualité d'image
qualite=100
# Boucle sur les fichiers sélectionnés pour supprimer les données EXIF et/ou redimensionner
(while [ $# -gt 0 ]; do
# Récupération du nom du fichier selectionné
fichier_selectionne="$1"
# Si écrasement des images existantes
if [ "$sortie" = "Remplacer les images existantes" ] ; then
convert "$fichier_selectionne" -geometry "$dimensions_max>" -quality $qualite -strip "$fichier_selectionne"
fi
# Si nouvelle image avec un préfixe
if [ "$sortie" = "Créer de nouvelles images avec un préfixe" ] ; then
nouveaubasename=`basename "$fichier_selectionne"`
nouveaunom=$prefixe$nouveaubasename
convert "$fichier_selectionne" -geometry "$dimensions_max>" -quality $qualite -strip "$nouveaunom"
fi
# Si dans un sous-repertoire "Google+"
if [ "$sortie" = "Redimensionner les images dans un sous-repertoire \"Google+\"" ]; then
convert "$fichier_selectionne" -geometry "$dimensions_max>" -quality $qualite -strip "$repertoire/$fichier_selectionne"
fi
# Incrémentation du compteur de barre de progression
compteur=$(( compteur+=1 ))
# Calcul du pourcentage pour barre de progression
pourcentage=$(( compteur*100/total ))
# Transmission des informations à la barre de progression
echo "# $fichier_selectionne"
echo "$pourcentage"
shift
done
) | zenity --progress --text="Redimensionner image(s)" --percentage=0 --auto-kill --auto-close
# Fin du programme avec succès
# Si écrasement des images existantes
if [ "$sortie" = "Remplacer les images existantes" ] ; then
zenity --info --text="Redimensionnement réalisé avec succès. Vos images ont été remplacées"
fi
# Si nouvelle image avec un préfixe
if [ "$sortie" = "Créer de nouvelles images avec un préfixe" ] ; then
zenity --info --text="Redimensionnement réalisé avec succès. Vos images ont été créées avec le préfixe : \"$prefixe\""
fi
# Si dans un sous-repertoire "Google+"
if [ "$sortie" = "Redimensionner les images dans un sous-repertoire \"Google+\"" ]; then
zenity --info --text="Redimensionnement réalisé avec succès. Vos images ont été créées dans le sous-répertoire \"Google+\""
fi |
Partager