原理解说发布日期 阅读时间约 7 分钟

Exif Orientation 的含义:1〜8 的值与照片横倒的原因

用手机竖着拍的照片,一放到电脑或博客上就横倒了;删掉 Exif 后照片也躺下了。这些现象几乎都源于 Exif 中一个叫“Orientation(方向)”的项目。本文说明 Orientation 的 1〜8 各代表什么、照片为什么是横着保存的、横倒显示时的改法,以及删除 Exif 时只保留方向的方法。

照片常常是“横着”保存的

相机的传感器是横长的。即使竖着拿手机拍,传感器读出的图像数据仍以横长的状态,也就是转了 90 度的状态写入文件。然后在 Exif 里附上一条指令:“显示时请顺时针转 90 度”。这就是 Orientation(方向)。

如果真的把图像数据转过来再保存,JPEG 就要重新压缩,既费时间,画质也会略有下降。只写一条指令则瞬间完成,画质不变。相机和手机采用这种方式就是这个原因。

Orientation 值 1〜8 的含义

Orientation 是 1〜8 的整数,表示“显示时如何旋转、翻转所保存的数据”。平时见到的是 1、3、6、8 这四个;2、4、5、7 包含左右或上下翻转,只在自拍镜像设置、扫描仪等有限场合出现。

值显示时的处理常见场合
1原样(不旋转)横着拿拍的照片、截图
2左右翻转后显示设置为镜像保存的自拍
3旋转 180 度后显示上下颠倒着拿拍的照片
4上下翻转后显示几乎见不到
5左右翻转后逆时针转 90 度显示几乎见不到
6顺时针转 90 度后显示竖着拿手机拍的照片(最多)
7左右翻转后顺时针转 90 度显示几乎见不到
8逆时针转 90 度后显示同样竖拍,但与 6 拿法相反

6 和 8 都是竖幅照片,但拿法相差 180 度。竖着拿手机时,镜头在上方还是下方,记录下来的数据方向就会相反。同一个人拍的竖幅照片里 6 和 8 混在一起,并不少见。

删除 Exif 后照片横倒的原因

为了删除位置信息而使用“删除全部 Exif”的工具,Orientation 也会一起被删掉。于是“旋转后显示”的指令没了,原本 Orientation = 6 的竖幅照片,横长的数据会原样显示,变成向左倒 90 度的样子。

防止的方法有两种。一种是只保留 Orientation,删除其余的 Exif。照片 Exif·位置信息检查器的“全部删除”默认只把方向信息重新写回去,所以删除后竖幅照片仍然竖着显示。另一种是先旋转图像数据本身再保存,把 Orientation 设为 1。这种方法要重新压缩 JPEG,画质会略有下降。

删除方式方向画质
删除全部 Exif竖幅照片可能横倒不变
只保留 Orientation 后删除不变不变
旋转图像重新绘制,Orientation 设为 1不变JPEG 因重新压缩略有下降
用图片转换工具重新导出浏览器会先旋转再绘制,所以大多不变JPEG 因重新压缩略有下降

想在不降低画质的前提下只去掉位置信息,思路请参阅无损删除 Exif 的方法。

横倒显示的照片怎么改

  1. 1

    先确认 Orientation 的值

    把照片放进照片 Exif·位置信息检查器,用“查看所有项目”查看方向(Orientation)的值。如果是 6 或 8,原因是软件没有读取这条指令。如果是 1 却仍然横倒,就是拍摄时的方向判断本身出了偏差。

  2. 2

    改成显示端能读懂的形式

    博客或 CMS 忽略方向时,在相册应用中旋转一次再保存,或者用会旋转后再导出图像的工具处理,数据本身就是正确方向,在任何软件中显示都一样。

  3. 3

    确认没有被转两次

    数据已经转过来,但 Orientation 仍然是 6 的话,读取 Orientation 的软件会再转 90 度,这次又朝反方向倒。原则上,旋转数据之后要把 Orientation 设为 1。

PNG 和 HEIC 的方向如何决定

  • JPEG:由 Exif(APP1)中的 Orientation 决定。这是最常见的形式。
  • PNG:原本没有方向信息,后来可以在 eXIf 区块中放入 Exif,若其中有 Orientation,有些软件会读取。截图的 PNG 通常没有。
  • WebP:可以在 EXIF 区块中放入 Exif。由 JPEG 转换来的 WebP,有的继承了 Orientation,有的没有。
  • HEIC(iPhone):方向由 HEIC 本身的旋转信息决定,与 Exif 无关。所以删除 HEIC 的 Exif,显示方向也不会变。

由于各格式保存方向的方式不同,可能出现 HEIC 一转成 JPEG 方向就不对的情况。转换步骤和注意事项请参阅HEIC 转 JPEG 的方法。

常见问题

Exif 的 Orientation 6 是什么意思?
意思是“把保存的图像顺时针转 90 度后显示”。这是竖着拿手机拍的照片中最常见的值,数据本身是横长保存的。用不读 Orientation 的软件打开,照片看起来会向左倒。
Orientation 8 和 6 有什么区别?
旋转方向相反。6 是顺时针转 90 度,8 是逆时针转 90 度后显示。两者都是竖幅照片,但拍摄时手机拿法相差 180 度,记录的值就会互换。
删除 Exif 后照片变成横的,为什么?
因为显示时用来旋转的指令(Orientation)也被删掉了。数据仍是横长的,指令没了就会横倒显示。请只保留 Orientation 再删除,或者把图像旋转后重新保存。
上传到博客后照片自己转了方向,为什么?
要么上传处理丢弃了 Exif,Orientation 指令丢失了;要么显示端的软件不读取 Orientation。上传前在相册应用中旋转后重新保存,让数据本身就是正确方向,放到哪里方向都一致。

本文介绍的工具

相关文章