redim
redim
a pour but de redimensionner de façon massive des fichiers de type JPEG
. La dimension des images à obtenir et la qualité JPEG
peut être spécifiée. Les fichiers produits sont datés à la date de la prise de vue, stockée dans les données EXIF
de la photographie et déposés dans un répertoire dfférent de celui contenant les originaux.
redim
est distribué sous licence libre CeCILL.
Une fois le fichier téléchargé, vous devez
sudo mv redim /usr/local/bin/
sudo chmod +x /usr/local/bin/redim
Ce logiciel nécessite l'utilisation des utilitaire identify
et convert
, installables sous Ubuntu ou Debian par
sudo aptitude install imagemagick
$ redim -h Usage : redim [-q qualité] [-d dimension] origine destination redim -h Redimensionne les images de type JPEG contenues dans le répertoire origine et place le résultat dans le répertoire destination. Tout fichier non JPEG est recopié à l'identique. Si le répertoire de destination est terminé par un slash, un répertoire du nom du répertoire d'origine y est créé. Le comportement est récursif. La qualité est la qualité JPEG de redimensionnement. Elle doit être comprise entre 0 et 100 (valeur par défaut 90). La dimension est la grande dimension des images à laquelle elles sont redimensionnées (valeur par défaut 1600). Les images sont uniquement réduites, les images originales trop petites sont recopiées à l'identique. Options : -h : afficher cette aide
#!/bin/bash # This software is governed by the CeCILL license under French law and # abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL # license as circulated by CEA, CNRS and INRIA at the following URL # "http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt". # # Ce logiciel est régi par la licence CeCILL soumise au droit français et # respectant les principes de diffusion des logiciels libres. Vous pouvez # utiliser, modifier et/ou redistribuer ce programme sous les conditions # de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA # à l'adresse "http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt". # # Copyright Cyril Ravat, <[email protected]> (2007-2011) # Website : http://www.cyril-ravat.fr/scripts/redim.php # Help : redim -h # Options par défaut # Qualité d'enregistrement JPEG (entre 0 et 100) QUALITE=90 # Dimension maximale en pixels DIMENSION=1600 # Mode récursif RECUR= # Options du script while getopts ":hq:d:" option do case $option in "h") echo "Usage : $(basename "$0") [-q qualité] [-d dimension] origine destination" echo " $(basename "$0") -h" echo echo -e "Redimensionne les images de type JPEG contenues dans le répertoire \033[1morigine\033[0m et" echo -e "place le résultat dans le répertoire \033[1mdestination\033[0m. Tout fichier non JPEG est" echo "recopié à l'identique. Si le répertoire de destination est terminé par un slash," echo "un répertoire du nom du répertoire d'origine y est créé. Le comportement est récursif." echo echo -e "La \033[1mqualité\033[0m est la qualité JPEG de redimensionnement. Elle doit être comprise" echo "entre 0 et 100 (valeur par défaut $QUALITE)." echo -e "La \033[1mdimension\033[0m est la grande dimension des images à laquelle elles sont" echo "redimensionnées (valeur par défaut $DIMENSION). Les images sont uniquement réduites," echo "les images originales trop petites sont recopiées à l'identique." echo echo "Options :" echo -e " \033[1m-h\033[0m : afficher cette aide" echo exit 0 ;; "q") QUALITE=$OPTARG ;; "d") DIMENSION=$OPTARG ;; "?|:") break ;; esac done shift $((OPTIND-1)) # Si moins de deux arguments, affichage de l'aide if [ $# -lt 2 ] ; then echo "Il faut au moins deux arguments. L'option -h permet d'afficher l'aide." exit 1 fi # Vérification de l'utilitaire imagemagick if [ -z `which identify` ]; then echo -e "L'utilitaire \033[1midentify\033[0m n'existe pas." echo -e "Il faut installer le paquet \033[1mimagemagick\033[0m." exit 1 fi # Vérification de l'existence des répertoires [ ! -d "$1" ] && echo "Erreur : $1 n'est pas un répertoire valide." && exit 2 [ ! -d "$2" ] && echo "Erreur : $2 n'est pas un répertoire valide." && exit 2 # Copie des arguments et suppression des derniers "/" éventuels ORIGINE="${1%/}" [ ${2:(-1)} != "/" ] && DESTINATION="$2" || DESTINATION="$2${ORIGINE##*/}" # Création du répertoire de destination si besoin (si erreur lors de la # création, sortie avec erreur) [ -d "$DESTINATION" ] || mkdir -p "$DESTINATION" || exit 3 for i in "$ORIGINE"/*; do j="$DESTINATION/$(basename "$i")" # Traitement des répertoires if [ -d "$i" ]; then [ -d "$j" ] || mkdir -p "$j" echo "Répertoire $i" $0 -q $QUALITE -d $DIMENSION "$i" "$j" continue fi # Traitement des images EXT=`echo "${j##*.}" | tr [:upper:] [:lower:]` if [ "$EXT" = "jpg" ] || [ "$EXT" = "jpeg" ]; then # On vérifie les dimensions infos=(`identify -format "%m %w %h" "$i"`) if [ "${infos[1]}" -le "$DIMENSION" ] && [ "${infos[2]}" -le "$DIMENSION" ]; then echo "Image $i : trop petite pour être redimensionnée, copie à l'identique" cp -p "$i" "$j" else echo "$i -> $j" convert -resize "$DIMENSION"x"$DIMENSION" -quality "$QUALITE" "$i" "$j" fi # On utilise les données EXIF pour remettre le fichier à l'heure. # ATTENTION : ne fonctionne pas avec la version 6.3.7 d'Imagemagick TIME=`identify -format "%[EXIF:DateTimeOriginal]" "$j" 2>/dev/null` [ -z "$TIME" ] && TIME=`identify -format "%[EXIF:DateTime]" "$j" 2>/dev/null` # Work around pour la version 6.3.7 d'Imagemagick (jusqu'à Ubuntu Intrepid par exemple) [ -z "$TIME" ] && TIME=`identify -format "%[exif:*]" "$j" 2>/dev/null | sed -n "/DateTimeOriginal=/s/exif:DateTimeOriginal=//p"` [ -z "$TIME" ] && TIME=`identify -format "%[exif:*]" "$j" 2>/dev/null | sed -n "/DateTime=/s/exif:DateTime=//p"` [ -n "$TIME" ] && TIME=`echo "${TIME:0:16}.${TIME:17}" | tr -d ': '` && touch -m -t "$TIME" "$j" 2>&1 # Traitement des autres types de fichiers else echo "Fichier $i : type non reconnu, copie à l'identique" cp -p "$i" "$j" touch -m -r "$j" "$i" fi done