指定されたフォルダ内のすべての画像を取得するbashスクリプトが必要です。それらの解像度を取得し、それが最小値を下回っている場合は何もしません。それ以外の場合は、中程度の親指の画像(200x150ピクセル)を作成します。
WindowsでImagemagickを使用しています。しかし、Linuxでは同じスクリプトを使用できないため、新しいスクリプトを作成する必要があります。
これは私がこれまでに思いついたものです。
#!/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
しかし、このスクリプトを実行しても、サムネイルが表示されたり、エラーが発生したりすることはありません。私はこれらのスクリプトにかなり慣れていません。
アップデート :
私はこのスクリプトを思いついた、みんなに感謝します。しかし今、私はもう1つの助けが必要です。ここで、新しい画像を画像フォルダ内のフォルダに保存したいと思います。たとえば、/ home/imageはすべてのファイルがある場所です。親指の画像を/home/ image/thumbsに保存したい。また、ファイルの名前をfilename_thumb.jpgに変更したいのですが、次のスクリプトの問題は、filename.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