词典

什么是图像方向?

方向是元数据,用来告诉软件如何旋转或翻转照片或视频,使其正立显示。

orientation

图像方向是指你查看图片时它朝向的方式:正立、倒置、侧转或镜像。在文件的元数据中,Orientation(方向)字段会告诉软件如何旋转已存储的图片,使它以正立方式显示。

在摄影中,方向通常指竖向(纵向)或横向。竖图的高度大于宽度,而横图的宽度大于高度。当你拍照时,相机或手机会把你握持设备的方式,以方向数据的形式保存在文件中。

哪些文件携带它

Orientation 标签属于 Exif 标准的一部分,它来源于 TIFF 格式。它的标签 ID 是 0x0112,十进制为 274。该标准将它列为主图像的推荐标签,你可以在这些文件中找到它:

  • 来自相机和手机的 JPG 和 TIFF 照片
  • HEIC、PNG 和 WebP 图像,它们都可以保存一块 Exif 数据

HEIC 文件还可以把旋转和镜像作为容器的独立属性来保存,名称为 irot 和 imir。一些相机还会添加私有标签。一些佳能机型会写入 CameraOrientation,在元数据报告中会显示为 Horizontal (normal)、Rotate 90 CW 或 Rotate 270 CW。

数值的呈现方式

在文件内部,这个值是从 1 到 8 的数字。每个数字都指明已存储像素的第一行和第一列在屏幕上的位置。元数据报告通常会以文字说明其含义,其中 CW 表示顺时针:

  • 1 表示 Horizontal (normal):图片按正立方式存储,因此无需变化
  • 3 表示 Rotate 180:图片按倒置方式存储
  • 6 表示 Rotate 90 CW:软件在显示前会将图片顺时针旋转 90 度
  • 8 表示 Rotate 270 CW:软件会将图片顺时针旋转 270 度,也就是逆时针 90 度
  • 2、4、5 和 7 会额外加入镜像翻转,例如 Mirror horizontal

标准把所有其他数字标记为保留值。因此,1 到 8 以外的数值没有定义的含义。

视频如何存储旋转信息

视频文件用不同的方式处理方向。MP4 或 MOV 文件会在其视频轨道的头部存储一个显示矩阵。这个矩阵告诉播放器在显示前如何旋转或翻转每一帧。

读取元数据的程序会把这个矩阵转换为一个以度数表示的角度。ExifTool 按顺时针计算角度,而 FFmpeg 在 -180 到 180 的范围内按逆时针计算角度。因此,同一个视频在一份报告中可能显示为 90,而在另一份报告中显示为 -90。

这对你的文件有何影响

Orientation 的取值不会移动任何像素。像素会按相机保存时的顺序保留不变,这个标签只告诉查看程序如何显示它们。网页浏览器默认会应用该标签,但忽略它的程序会把竖图横着显示。

这也是宽度和高度看起来会对调的原因。Image Width 和 Image Height 描述的是任何旋转前已存储像素的尺寸。因此,一个带有 Rotate 90 CW 的竖图,报告的宽度可能会大于高度。

编辑还可能导致第二个问题。如果某个程序旋转了像素却保留旧标签,图片就会被旋转两次。Exif 标准建议,编辑软件在旋转图像后应把 Orientation 值重置为 1。

PDF 页面使用它们自己的字段。Page Rotation 会在显示或打印页面时,以 90 度为步长顺时针旋转整页。