J'ai besoin d'un bash script qui récupère toutes les images à l'intérieur d'un dossier spécifié ; prend leur résolution et si elle est inférieure au minimum alors ne fait rien, sinon crée une image thumb moyenne (200x150 pixels).
J'utilise Imagemagick sous Windows. Mais sur linux, je ne peux pas utiliser le même script donc je dois écrire un nouveau script.
Voici ce que j'ai trouvé jusqu'à présent.
#!/bin/bash
for files in /path/to/image/*
do
TESTFILE=`echo "$files" | sed 's/|/ /g' | xargs file -b | awk '{print $1}'`
while read F
CHECKSIZE=`file "$TESTFILE" -b | sed 's/ //g' | sed 's/,/ /g' | awk '{print $2}' | sed 's/x/ /g' | awk '{print $1}'`
if [ $CHECKSIZE -ge 200 ]; then
convert -sample 200x150 "$F" "$F{_thumb}"
fi
done
done
Mais lorsque j'exécute ce script, il ne me donne pas de vignettes ni d'erreurs. Je suis assez nouveau dans ces scripts.
Mise à jour :
Je suis arrivé à ce script, merci pour tout. Mais maintenant j'ai besoin d'une aide supplémentaire. Maintenant, je veux stocker la nouvelle image dans un dossier à l'intérieur du dossier images. Par exemple, /home/image est l'endroit où se trouvent tous les fichiers. Je veux que les images miniatures soient stockées dans /home/image/thumbs . Je veux aussi renommer les fichiers comme nom de fichier_thumb.jpg mais le problème avec le script suivant est qu'il est stocké en tant que nom de fichier.jpg_thumb .
#!/bin/bash
THUMBS_FOLDER=/home/temp/thumbs
for file in /home/temp/*
do
# next line checks the mime-type of the file
IMAGE_TYPE=`file --mime-type -b "$file" | awk -F'/' '{print $1}'`
if [ x$IMAGE_TYPE = "ximage" ]; then
IMAGE_SIZE=`file -b $file | sed 's/ //g' | sed 's/,/ /g' | awk '{print $2}'`
WIDTH=`identify -format "%w" "$file"`
HEIGHT=`identify -format "%h" "$file"`
# If the image width is greater that 200 or the height is greater that 150 a thumb is created
if [ $WIDTH -ge 201 ] || [ $HEIGHT -ge 151 ]; then
#This line convert the image in a 200 x 150 thumb
filename=$(basename "$file")
extension="${filename##*.}"
filename="${filename%.*}"
convert -sample 200x150 "$file" "${THUMBS_FOLDER}/${filename}_thumb.${extension}"
fi
fi
done