Safari Mobile 中的 EXIF 方向问题

Ale*_*Dev 12 javascript exif file-upload mobile-safari angular

我在生产环境中有一个 angular 2 应用程序,它允许您选择个人资料图片。最近,在 safari mobile 上进行测试,特别是针对 IOS 13.3.1 版本(旧)和 IOS 13.4.1(新)版本。我注意到图像根据使用的 safari 浏览器版本旋转显示(我为此构建了一个堆栈闪电战,您可以查看):

IOS 13.3.1 版本(旧)

在此处输入图片说明

IOS 13.4.1(新)

在此处输入图片说明

当我以纵向模式从 iPhone 拍摄图像并将图像上传到我的应用程序时,它仅针对 IOS 13.3.1 version(older)显示旋转。但是,我检查了每个设备的 EXIF 元信息图像,发现这两个图像在方向属性中具有相同的值:

IOS 13.3.1 版本(旧)

在此处输入图片说明

IOS 13.4.1(新)

在此处输入图片说明

我的问题是。为什么图像显示会根据 IOS 版本而变化,知道这两种情况下的方向 EXIF 是相同的值 (6)?

这是一个让我担心的主题,因为我已经通过根据 EXIF 方向值旋转图像以使其正确显示来解决这个问题(例如,已经创建了 exif.js 来通过检测 exif 方向标志来处理这种情况),但是这个问题现在随着新版本的IOS再次出现。什么是我可以用来使其随着时间的推移可持续的代码示例?浏览器之间是否没有就管理图像方向达成共识?

这种不合逻辑的行为的解释是什么?

非常感谢!

Phi*_*uke 5

webkit 浏览器会在您根据 EXIF 数据上传图像之前旋转图像,然后您的应用程序会再次应用它。我们能够在新版 Chrome (81) 和 13.4 上的 Mobile Safari 上确认这一点。然后应用程序进一步旋转它们,它就会扭曲。


wal*_*ist 5

当我们的手机突然表现不同时,我们也偶然发现了这一点,并最终找到了根本原因。

WebKit (iOS) 和 Android (Chrome) 最近都更改了image-orientationCSS 属性的默认行为。虽然这是 none以前,现在是from-image。这意味着:以前,他们默认忽略图像的 EXIF 数据,而现在他们使用它来自动更正图像。这打破了我们自己基于exifreader库的自动更正。

以下是一些相关链接:

有趣的是,Slack 团队似乎也遇到了这个问题:

幸运的是,exifreader图书馆的作者(几周后他遇到了同样的问题)也指导我找到了一种检测行为的方法。你可以在这里找到他的答案:

我还注意到 Modernizr 对此进行了测试,因此我现在实际上正在使用自定义的 Modernizr 构建来检测浏览器行为。