ImageMagick:如何确定jpeg文件的方向?

Mar*_*son 20 imagemagick

ImageMagick命令将显示JPG文件的方向?

mat*_*fee 19

您可以使用

identify -format '%[EXIF:Orientation]' <image.jpg>
Run Code Online (Sandbox Code Playgroud)

根据identify -format文档(关于exif元数据的进一步说法).

尝试

identify -verbose <image.jpg>
Run Code Online (Sandbox Code Playgroud)

要查看图像中的元数据(例如,如果图像未使用相机拍摄,则不会设置方向标记).

或者你也可以这样做

identify -format '%wx%h' <image.jpg>
Run Code Online (Sandbox Code Playgroud)

它为您提供高度宽度(例如'800x598','1936x2592')并使用它们来确定图像是否正直(不确定这是多么可靠 - 有时你用相机拍摄肖像图像和EXIF数据将正确记录方向,但图像可能仍然显示为横向).

  • 对我来说正确的解决方案是`identify -format"%[orientation]"` (2认同)
  • @saurabheights 这是在 Amazon Linux 上;在 OS XI 上获取 `identify: unknown image property "%[EXIF:Orientation]" @warning/property.c/InterpretImageProperties/3760。` Amazon linux 当前运行版本:ImageMagick 6.7.8-9 2016-06-22 Q16 通过安装yum 和 OS X 运行 ImageMagick 6.9.4-3 Q16 x86_64 2016-05-19 通过自制软件安装 (2认同)

sau*_*hts 19

介绍

图像存储的不仅仅是像素信息.许多信息以元数据的形式存储.图像可以在多个元数据目录中具有多个元数据 一些例子是:Exif,IPTC,JFIF,Ducky等.

Orientation是Exif目录中的元数据标签之一.此元数据通知您的显示设备在解码像素数据后如何定向图像.此元数据具有1-8的有效值.此元数据并不总是出现在图像中,因为可以从图像中删除元数据.也可以将此元数据设置为错误值,例如0,9,17等,因为此元数据支持16位无符号值(0-65535).

下图显示了使用此元数据如何影响图像显示.图片来源:https://me94.me/2316.html

定向元数据的影响

Imagemagick解决方案

从Imagemagick(IM)获取方向可能意味着两件事.您可能(大部分)对获取图像的方向感兴趣,第二种方法是知道方向元数据标记的确切值(在极少数情况下,我假设).

要知道方向,因此您有两个IM命令(它们输出的内容变化很小).

  1. identify -format '%[EXIF:orientation]' <InputFileName> [获取确切的元数据值.]
  2. identify -format '%[orientation]' <InputFileName> [获取图像方向值,exif值到可读术语的映射.]

对于命令1: -

即使值可能无效,输出也是精确值.例如: - 0,1,5或甚至65535.但是,在没有此元数据的情况下,输出(IMHO模糊输出)是: identify: unknown image property "%[EXIF:orientation]" @ warning/property.c/ InterpretImageProperties/3785.

对于命令2: -

输出如下: -

Undefined  - 0
Undefined  - [When no metadata]
TopLeft  - 1
TopRight  - 2
BottomRight  - 3
BottomLeft  - 4
LeftTop  - 5
RightTop  - 6
RightBottom  - 7
LeftBottom  - 8
Unrecognized  - any value between 9-65535, since 
                there is no mapping from value 9-65535
                to some geometry like 'LeftBottom'
Run Code Online (Sandbox Code Playgroud)

在Mac和Ubuntu(EC2)上测试