如何根据 exif 数据自动旋转图像

如何根据 exif 数据自动旋转图像

当我用我的相机(Olympus E-520)拍照时,方向会存储在 EXIF 数据中。

Ubuntu 上的标准图像查看器可以正确显示这些图像。但是 Windows 查看器却不行。

有没有办法在 Ubuntu 上批量旋转这些图像(如果需要根据 EXIF 旋转)?例如使用 ImageMagick 工具?

答案1

exiftranJHead ( 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 exiftranexiftran -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).

相关内容