私は非常に大きな画像の非常に大きなコレクションを持っており、画像が180pxの最大-最小幅(あなたが理解する)にサイズ変更されるサムネイルギャラリーを作成したいと思います。
例:画像が2400x1800の場合、240x180にサイズ変更されます。1600x1800の場合、180x202にサイズ変更されます。
はっきりしていますか?画像の最小サイズは、幅または高さに関係なく、正確に180にする必要があります。
これはコマンドラインでどのように可能ですか?各ファイルのサイズを特定のサイズに変更する方法は知っていますが、それらの異なるサイズではありません。
まさにそのような最小サイズオプションを持つImageMagickのconvert
を使用するのはどうですか? 画像ジオメトリ オプションを参照してください!
スニペットのコピーと貼り付け(bash構文)-サイズ指定の後の^
に注意してください。
for file in *.jpg; do
echo -n Converting ${file}...
convert -resize 180x180^ "$file" "th_$file"
echo done
done
さらに、結果のファイルを中心の周りの2次形状にトリミングする場合は、このスクリプトを使用できます。最初の行のSIZE
パラメーターは、サムネイルの最終的なサイズを指定します(驚き、驚き)。
SIZE=180
for file in *.jpg; do
echo -n Converting ${file}...
convert -resize ${SIZE}x${SIZE}^ "$file" temp.png
convert -crop $(identify temp.png | awk -F'[ x]' -v SIZE=$SIZE '{ printf "%ux%u+%u+%u", SIZE, SIZE, ($3-SIZE)/2, ($4-SIZE)/2 }') temp.png "th_$file"
echo done
done
rm temp.png
スクリプトはサムネイルに対して2つのコマンド(identify
とconvert -crop
)を実行するため、あまり最適化されていません。でもサムネイルが小さいのでスピードは妥当だと思います。