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

sha*_*ant 28 command-line imagemagick gimp

我有一大组具有相同分辨率的 JPEG 图片。在 imagemagic 或 gimp 的图形界面中打开每一个都需要很长时间。

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

GAD*_*D3R 48

您可以使用以下convert命令:

转换 input.jpg -rotate <以度为单位的角度> out.jpg

顺时针旋转 90 度:

convert input.jpg -rotate 90 out.jpg
Run Code Online (Sandbox Code Playgroud)

要使用相同的名称保存文件:

convert file.jpg -rotate 90 file.jpg
Run Code Online (Sandbox Code Playgroud)

旋转所有文件:

for photo in *.jpg ; do convert $photo -rotate 90 $photo ; done
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用@don-crisstimogrify推荐的命令行工具(最好的工具):

mogrify -rotate 90 *.jpg
Run Code Online (Sandbox Code Playgroud)

  • `$CAPITAL_NAMES` 应该留给环境变量;对于 shell 脚本或命令中的那些局部变量,使用 `$normal_lowercase` (2认同)
  • `convert` 重新编码 JPEG,因此是有损的。更好地使用`jpegtran` (2认同)

ilk*_*chu 17

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

for f in *.jpg ; do 
    jpegtran -rotate 180 "$f" > "${f%.jpg}-rotated.jpg"
done
Run Code Online (Sandbox Code Playgroud)

或者原地旋转:

for f in *.jpg ; do
    jpegtran -rotate 180 -outfile "$f" "$f"
done
Run Code Online (Sandbox Code Playgroud)

exiftran还具有-a根据 EXIF 方向标签所说的自动旋转图像的标志。