图像方向是指你查看图片时它朝向的方式:正立、倒置、侧转或镜像。在文件的元数据中,Orientation(方向)字段会告诉软件如何旋转已存储的图片,使它以正立方式显示。
在摄影中,方向通常指竖向(纵向)或横向。竖图的高度大于宽度,而横图的宽度大于高度。当你拍照时,相机或手机会把你握持设备的方式,以方向数据的形式保存在文件中。
哪些文件携带它
Orientation 标签属于 Exif 标准的一部分,它来源于 TIFF 格式。它的标签 ID 是 0x0112,十进制为 274。该标准将它列为主图像的推荐标签,你可以在这些文件中找到它:
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 度为步长顺时针旋转整页。