redimredim 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, <ravat@free.fr> (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