複数の画像のサイズを同じサイズに調整する方法

複数の画像のサイズを同じサイズに調整する方法

私のディレクトリにはいくつかの画像ファイルがあります。画像のサイズは似ており、背景色も同じです。

添付画像のように背景を追加してすべての画像を同じサイズにするにはどうすればよいですか?

ここに画像の説明を入力してください。

ベストアンサー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の返信

おすすめ記事