照片躺倒,不是压缩把画面转错了,而是文件里的方向标记没被带过去。相机竖拍时按传感器方向存像素,另写一个「显示时旋转90度」的记号,看图软件读它才摆正。压缩要重写文件头,这个记号一旦丢掉,图就按原始像素横躺下来。

感光元件只会朝一个方向读像素。横着拿还是竖着拿,存下来的像素矩阵常常是同一个朝向,差别只写在文件的一个字段里,取值表示「无需旋转」「转90度」「转180度」等几种情况。
支持读取这个字段的软件,会在显示时自动转正,所以本地看一切正常。而部分处理管线只按像素摆放,不做这层解释,图就躺下了。
压缩过程中是否保留这个字段,取决于当时的编码方式。有的处理会连像素一起转正再清空记号,有的只清记号不转像素,还有的保留记号却转了一遍像素,最后被转了两次,方向反而多转90度。
先比对宽高。原始照片竖拍时通常是宽小于高,如果压缩后的文件变成宽大于高,说明像素被保留了原朝向,只是记号没了。
再关掉自动旋转看一次。有的查看器可以在设置里关掉按方向显示,关掉后看到的就是像素真实朝向,与屏幕上默认显示一致的就说明记事正常。
最后看文件属性。能读取元数据的工具都能显示方向字段,取值是1表示正常,6和8对应两个方向的90度旋转。字段为空或缺失,就是压缩时丢了。
第一步,先转正。打开图片旋转,上传原图,用顺时针或逆时针按钮摆正,也可以用任意旋转微调角度,确认后保存。

第二步,转正后的文件已经把这个方向写进了像素,之后无论怎么压都不会再躺倒。这一步要在压缩之前做,顺序反了就得从头再来。
第三步,到JPG图片压缩按需要的体积压一轮。此时方向已经固化,压缩只处理体积,不再影响朝向。
屏幕截图、设计稿导出图没有方向记号,像素本身就是正的,压缩不会让它躺倒。
PNG多数情况下不依赖这个字段,转换格式后方向通常保持原样,不必专门处理。
平台自己会做方向归一化时,上传后的展示是正常的,不必为了保险多转一次,多转反而可能转错。
为什么只有部分照片会躺倒
只有带方向记号的素材才受影响。相机直出的照片几乎都带,截图和导出图不带,所以同一批文件里会出现有的正常、有的躺着。
把图放大再缩回来能修好吗
不能。插值只会重排像素,不会重新生成方向记号,转完之后看着是正的,再压一次可能又躺下。
压缩两次会不会转两遍
会。如果某一步既按记号转了像素又留着记号,下一步再按记号转一次,就会多转90度。所以正确做法是先转正、再清掉记号、然后才压。
判断顺序回到一句:先比对宽高,再关掉自动旋转看,最后查方向字段。是记号丢了就先转正固化,再压缩。手上有躺倒的图,转正后存一份再处理,比反复试参数稳。