高さ*幅の問題を一括調整

高さ*幅の問題を一括調整

このスクリプトを使用して、ディレクトリ内のすべての画像のサイズを変更したいと思いますbash

for i in *.jpg; do
    printf "Resize $i\n"
    convert "$i" -resize 336x336 "$i"
done

しかし、サイズ変更が完了したら、336x252この問題をどのように解決しますか?

Linuxイメージのサイズ変更の問題

ベストアンサー1

ImageMagickconvertユーティリティは、画像のサイズ変更時に指定したサイズ制限を超えずに、画像の縦横比を維持します。

48×36ピクセルのサイズ(または480×360または同じ4:3アスペクト比の画像)の画像があり、convertサイズを336×336ピクセルに調整するように要求する場合、長さと幅はそのままで336×252が最大の画像です。

あなたはできます convert'336x336!'options引数をoptionとして使用して、画像の縦横比を無視します-resize

これはImageMagickコマンドライン文書の関連セクションに文書化されています。画像幾何学


ループでprintf間違った方法で使用しています。

代わりにこれを行う: printf 'Resizing %s\n' "$i"

printf最初のパラメーターは次のようにする必要があります。いつもこれは静的型テンプレートであり、残りのパラメータはテンプレートを埋めるために使用されるデータでなければなりません。

また見なさい:ShellCheck問題コードSC2059(「printf形式の文字列に変数を使用しないでください」)。

おすすめ記事