如何基于exif数据自动旋转图像


31

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

Ubuntu上的标准图像查看器正确显示了这些图像。Windows查看器但是没有。

有没有一种方法可以在Ubuntu上批量批量旋转此映像(如果需要,请根据EXIF)?例如使用ImageMagick工具?

Answers:


37

exiftranJHead(jhead -autorot可以做到这一点。exiftran可以无损地做到这一点,不确定jhead


1
exiftran看起来正是我所需要的!
彼得·史密斯

3
jhead -autorot调用jpegtran,它可以完美地进行无损旋转。我忘记了IJG的无损资料。 jpegclub.org/losslessapps.html Exiftran也可以进行无损旋转,并且比jpegtran更好,因为它尊重图像文件中的exif信息。但是,您应该注意,有时候(而且我不确定所有细节)您无法无损地旋转。因此,如果您使用jhead实现脚本来标识必要的旋转(类似于我之前的脚本,但是带有case语句来处理所有旋转),则应该支持回退到有损旋转。
opello 2009年

1
我用exiftran -a(基于exif方向标签自动旋转)进行了一些测试,它似乎工作得很好。关于无损旋转,我无法通过执行与旋转相反的操作来获取源图像。例如exiftool -F 1.jpg -o 2.jpg; exiftool -F 2.jpg -o 3.jpg; 1.jpg和3.jpg的md5sum不同。经过仔细检查(使用Araxis合并二进制比较),有时只是exif标头信息有所不同,而有时是文件中的主要更改。但是,Araxis merge的图像比较显示没有不变的像素。
opello

我的意思是没有更改*像素(它们是像素相同的图像)。另外-我不确定是否使用stackoverflow / superuser协议,但是我认为dmityugov应该推荐推荐的适当工具。
opello

1
我发现exiftran可以从文件中删除一些元数据。例如,由Samsung Galaxy S2拍摄的图像具有时间戳字段(可能是非EXIF),而exiftran会将其删除。exiftran -a也将更改不需要旋转的图像。jhead -autorot没有这两个问题。OTOH,它缺少保留文件mtime的选项(但是有-ft开关作为解决方法)。
pfalcon

12

ImageMagick的转换工具具有-auto-orient标志,可以完成工作。

#!/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)或任何您需要的内容。


1
大!我没有找到那个。我将它与mogrify结合使用来制作一批图像。仅一个问题,即使不更改图像,为什么还要重写所有图像?(哈希值有所不同)
Peter Smit

我不知道为什么,但是似乎对图像diff和二进制diff进行了完全重新编码。
opello

哇,太好了 非常感谢。如果没有其他超好答案,我一定会接受的。
彼得·史密斯

2

您可以使用XnView来做到这一点。请查看以下页面,以获取有关使用XnView以批处理模式进行自动旋转的信息:

在Windows中,您可以使用IrfanView做到这一点。从IrfanView网站的“常见问题”部分:

问:如何在批处理模式下使用JPG无损操作(旋转,IPTC,注释)?

答:启动“缩略图”窗口,打开包含JPG的文件夹,选择许多JPG,然后在缩略图菜单中查看JPG的文件无损操作->使用选定的拇指进行无损转换。注意:仅当正确保存EXIF方向标签(而不是左上角)时,自动旋转选项才有效。


1

使用ImageMagick,您还可以使用mogrify旋转文件,并将旋转后的图像写回到原始文件名。

mogrify -auto-orient *.jpg
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.