web-dev-qa-db-ja.com

コマンドラインから一連の画像を回転させる方法は?

すべて同じ解像度のJPEG画像の大規模なセットを持っています。 imagemagicまたはgimpのグラフィカルインターフェース内でそれぞれを開くには時間がかかりすぎます。

各画像を回転して同じファイル名で保存するにはどうすればよいですか?

17
sharkant

convertコマンドを使用できます。

 convert input.jpg -rotate -degrees out.jpg

例えば:

convert input.jpg -rotate -180 out.jpg

同じ名前で保存します。

convert file.jpg -rotate -180 file.jpg

すべてのファイルをローテーションします。

for photo in *.jpg ; do convert $photo -rotate 90 $photo ; done

編集

@ don-crissti が推奨するmogrifyコマンドラインツール(最適なツール)を使用できます。

mogrify -rotate 90 *.jpg
25
GAD3R

JPEG画像と直角回転の場合、画像をロスレスで回転できるため、 jpegtran または exiftran を使用します。

for f in *.jpg ; do 
    jpegtran -rotate 180 "$f" > "${f%.jpg}-rotated.jpg"
done

または、その場で回転するには:

for f in *.jpg ; do
    jpegtran -rotate 180 -outfile "$f" "$f"
done

exiftranには-aフラグを使用すると、EXIF方向タグの内容に基づいて画像が自動的に回転します。

16
ilkkachu