当我用我的相机(Olympus E-520)拍照时,方向会存储在 EXIF 数据中。
Ubuntu 上的标准图像查看器可以正确显示这些图像。但是 Windows 查看器却不行。
有没有办法在 Ubuntu 上批量旋转这些图像(如果需要根据 EXIF 旋转)?例如使用 ImageMagick 工具?
答案1
exiftran
和JHead ( jhead -autorot
)可以做到这一点。exiftran
可以无损地做到这一点,但不确定jhead
。
答案2
ImageMagick 的转换工具有一个-自动定向标志应该可以完成工作。
#!/bin/bash
JHEAD=jhead
SED=sed
CONVERT=convert
for f in *.jpg
do
orientation=$($JHEAD -v $f | $SED -nr 's:.*Orientation = ([0-9]+).*:\1:p')
if [ -z $orientation ]
then
orientation=0
fi
if [ $orientation -gt 1 ]
then
echo Rotating $f...
mv $f $f.bak
$CONVERT -auto-orient $f.bak $f
fi
done
我编写了一个快速脚本来迭代当前目录中的 *.jpg。您可以轻松修改它以接受路径 ($1) 或您需要的任何内容。
答案3
使用 ImageMagick 您还可以使用 mogrify 旋转文件并将旋转后的图像写回原始文件名。
mogrify -auto-orient *.jpg
答案4
@user7963 的答案exiftran
是正确的,但是我们如何使用呢?以下是我发现的:
在 Ubuntu 20.04 上测试:
安装:
sudo apt update
sudo apt install exiftran
用它:
将所有*.jpg
图像转换dir_of_images
为根据其 exif 方向元数据自动旋转:
cd path/to/dir_of_images
exiftran -ai *.jpg
就这样!*.jpg
现在所有图片都已旋转到位!
请参阅man exiftran
或exiftran -h
获取帮助和详细信息。
以下是我使用的两个选项(-a
和-i
)的含义:
TRANSFORM OPTIONS -a Automatic (using exif orientation tag).
OTHER OPTIONS -i Enable in-place editing of the images. Exiftran allows multiple input files then. You must specify either this option or a output file with -o for all operations which modify the image (i.e. everything but -d right now).