如何从命令行旋转一组图片?


17

我有一整套具有相同分辨率的JPEG图片。在imagemagic或gimp的图形界面中打开每个窗口将花费太长时间。

如何使每张图片旋转并保存为相同的文件名?


3
这里。但是请注意,重新编码JPEG通常会造成损失。
聪桂

Answers:


22

您可以使用以下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-crisstimogrify推荐的命令行工具(最佳工具)

mogrify -rotate 90 *.jpg

1
thx,如果有很多文件,我怎么告诉命令-rotate -180左边的文件名必须和它右边的文件名相同?
sharkant

不管将文件左右旋转,将文件旋转180度总是可以得到相同的结果。
djsmiley2k TMW,

@ GAD3R 360度之后将产生相同的图像。向左或向右旋转图像180度,两者都可以提供相同的图像(但上下颠倒)。
djsmiley2k TMW,

2
$CAPITAL_NAMES应该留给环境变量;在shell脚本或命令中使用的那些局部变量$normal_lowercase
cat

2
convert重新编码JPEG,因此是有损的。更好地利用jpegtran
IMZ -伊万Zakharyaschev

16

对于JPEG图像和直角旋转,请使用jpegtranexiftran,因为它们可以无损旋转图像。

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方向标签所说的自动旋转图像的标志。


要使用进行逆时针(左角)旋转jpegtran,请根据手册使用-rotate 270和与exiftran一起使用-2标志。
Timo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.