Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Safari Mobile中的EXIF定位问题_Javascript_Angular_File Upload_Mobile Safari_Exif - Fatal编程技术网

Javascript Safari Mobile中的EXIF定位问题

Javascript Safari Mobile中的EXIF定位问题,javascript,angular,file-upload,mobile-safari,exif,Javascript,Angular,File Upload,Mobile Safari,Exif,我在生产环境中有一个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版本(旧版)中显示为旋转。然而,我检查了EXIF​​来自我的每个设备

我在生产环境中有一个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版本(旧版)中显示为旋转。然而,我检查了EXIF​​来自我的每个设备的元信息图像,并发现两个图像在方向属性中具有相同的值:

IOS 13.3.1版本(旧版)

IOS 13.4.1(新增)

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

这是一个让我担心的问题,因为我已经解决了这个问题,根据EXIF方向值旋转图像以正确显示(例如,创建EXIF.js是为了通过检测EXIF方向标志来处理这种情况),但这个问题现在在新版本的IOS中再次出现。我可以用什么样的代码来让它在一段时间内保持可持续性?在管理图像方向方面,浏览器之间是否存在共识

对这种不合逻辑的行为有什么解释


非常感谢你

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

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

WebKit(iOS)和Android(Chrome)最近都改变了
图像定向
CSS属性的默认行为。以前它是
none
,现在它是图像中的
。这意味着:以前,默认情况下,他们忽略了图像的EXIF数据,而现在他们使用它来自动更正图像。这打破了我们基于
exifreader
库的自动更正

以下是一些相关链接:

有趣的是,懒散的团队似乎也遇到了这样的情况:

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


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

您好,Philip,非常感谢您的回答,我没有注意到。欢迎来到社区!有没有办法检查是否已经实施了轮换?@FredrikJungstedt请看下面我的答案。现代化测试供参考: