苹果手机(试过7和8,其他的没试过)拍摄的照片,有个问题,不管这张图在 Mac 上显示是竖图还是横图,其宽高值是一样的。
比如,有个图片叫 vertical.jpg 和 horizontal.jpg。使用 ffprobe 检测,会得到类似下图的结果:
Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), \
4032x3024 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
判断为横图。而在 finder 中显示为竖图。
然后我换了 MacOS 自带的 sips 检测:
$ sips -g pixelWidth -g pixelHeight vertical.jpg
pixelWidth: 4032
pixelHeight: 3024
$ sips -g pixelWidth -g pixelHeight horizontal.jpg
pixelWidth: 4032
pixelHeight: 3024
输出竟然一模一样。
终于,经过一番 bing,我发现了神器 exiftool,用它比对和后发现:
$ exiftool vertical.jpg | grep Orientation
Orientation : Rotate 90 CW
$ exiftool horizontal.jpg | grep Orientation
Orientation : Horizontal (normal)
# 也可以写成:
$ exiftool -orientation vertical.jpg
Orientation : Rotate 90 CW
原来苹果区分是否横图用的不是宽高值,而是一个叫 Orientation 的属性,真是坑爹啊。
因此,你需要把宽高值都拿出来,然后根据 Orientation 是否为 Horizontal 来判断“宽”是否是“宽”,“高”是否是“高”。
记于 20200323