我有一个包含大量图片的目录,但它们的方向错误。我想旋转图片以纠正方向(大部分是 ±90 o)。使用图像(shotwell 照片)查看器,我可以通过单击旋转按钮单独旋转它们,但这太繁琐了。
我查看了man shotwell
,shotwell --help-all
但没有任何内容解释如何从命令行调用旋转命令。
有什么方法可以从终端调用 shotwell(或任何其他查看器)的旋转命令吗?或者也欢迎使用任何其他方法来旋转图像。
答案1
如果您正在寻找纯 bash 实现,ImageMagick 的convert
命令就是您要找的:
for szFile in /path/*.png
do
convert "$szFile" -rotate 90 /tmp/"$(basename "$szFile")" ;
done
以上将保持现有文件完好无损,并复制新旋转的文件,/tmp
以便您可以将它们移动或复制到其他地方,或者甚至取代现有的转换后并经过验证。
(并且它将在 Ubuntu 所有最新版本上运行,因为它是标准软件)
答案2
for file in *.JPG; do convert $file -rotate 90 rotated-$file; done
这将复制-旋转— 并重命名您的文件。
如果您暂时不想改变原始文件,这种方法可能适合您...
请注意,这是区分大小写的:如果您的文件名为 *.jpg,请相应地替换为小写(或 *.png ...)。
答案3
如果您想就地覆盖,mogrify
从 ImageMagick 套件中实现这一点似乎是最简单的方法:
# counterclockwise:
mogrify -rotate -90 *.jpg
# clockwise:
mogrify -rotate 90 *.jpg
警告:这不是 JPEG 文件的无损旋转方法,https://www.imagemagick.org/discourse-server/viewtopic.php?t=5899.
jpegtran
实现此目的(未经测试):
# counterclockwise
ls *.jpg | xargs -n 1 jpegtran -perfect -rotate 270
# clockwise
ls *.jpg | xargs -n 1 jpegtran -perfect -rotate 90
答案4
exiftran 怎么样 - 转换数码相机 jpeg 图像
我知道它有点限制(jpeg)但它具有自动功能(使用 exif 方向标签)。
for photo in *.jpg
do exiftrans -ia $photo
done
关于 Exiftran,它是一个用于转换数码相机 jpeg 图像的命令行实用程序。它可以像 jpegtran(1) 一样进行无损旋转,但与 jpegtran(1) 不同的是,它关心 EXIF 数据:它可以通过检查 exif 方向标签自动旋转图像;如果需要,它会更新 exif 信息(图像尺寸、方向);它还会旋转 exif 缩略图。它可以一次处理多张图像