私のディレクトリにはいくつかの画像ファイルがあります。画像のサイズは似ており、背景色も同じです。
添付画像のように背景を追加してすべての画像を同じサイズにするにはどうすればよいですか?
ベストアンサー1
これは、ImageMagickが他を*.png
指定せずに処理できるすべての画像タイプに対して機能します。*.jpg
*.jpeg
#!/bin/bash
images=$(identify -format '%f\n' * 2>/dev/null)
IFS=$'\n'
set -e
max_dims=$(
identify -format '%w %h\n' $images 2>/dev/null |
awk '($1>w){w=$1} ($2>h){h=$2} END{print w"x"h}'
)
orig_dir=originals_$(date +%Y-%m-%d_%T)
mkdir "$orig_dir"
mv -- $images "$orig_dir"
cd "$orig_dir"
set +e
for image in $images; do
convert -- "$image" -gravity Center -extent "$max_dims" "../$image"
done
結果が理想的でない場合は、元の画像が古いディレクトリに移動されます。また、何らかの理由でイメージファイル名に改行文字が含まれていると、この操作は失敗します。
スクリプトは、問題が発生したときに便利な表示を提供するために追加のエラーメッセージを処理できます。ただし、現在の画像(set -e
およびその間のすべての項目set +e
)の移動中にエラーが発生すると、スクリプトは終了します。これにより、元に戻せないダメージが発生しないことを願います。
修正する
今awk
シナリオは恥ずかしく盗まれました。@terdonの返信。