Android10/Chrome92环境下PWA上传图片Exif的GPS数据被剥离如何解决?
安卓端Chrome自动移除图片Exif GPS信息的解决方案
这是Chrome 115及以上版本、安卓13及以上版本推出的默认隐私保护机制,即使用户已经授予相机、定位权限,也会默认剥离从文件选择器、相机拍照入口获取的图片中的GPS等敏感Exif信息,可通过以下方式解决:
方案1:使用Image Capture API获取原始拍照数据
如果你的PWA是调用相机拍照后上传,不要使用<input type="file" capture="camera">的默认回调,改用ImageCapture API获取未经过系统隐私处理的原始图片数据:
- 前置要求:已成功申请
camera和geolocation权限,用户授予了始终允许定位的权限 - 操作流程:
- 调用
getUserMedia接口获取相机视频流 - 实例化
ImageCapture对象关联当前视频流 - 调用
takePhoto()方法获取原始图片Blob,该Blob默认保留完整Exif信息 - 若仍出现GPS缺失,可通过
Geolocation.getCurrentPosition()获取实时定位坐标,手动写入到图片Exif的GPS标签段即可
- 调用
方案2:调整Chrome flags配置(仅适用内部测试/自有设备场景)
如果是仅内部人员使用的PWA,可以让用户手动修改Chrome配置关闭Exif清理功能:
- 在Chrome地址栏输入
chrome://flags并访问 - 搜索
Media Exif Sanitization选项,将默认值改为Disabled - 重启Chrome后配置生效
该配置仅对当前浏览器生效,面向公网用户的产品不适用该方案。
方案3:通过Web Share Target API接收图片
如果你的PWA已经添加到用户桌面且配置了Web Share Target规则,可以引导用户从系统相册直接分享图片到PWA,该路径下安卓系统不会主动剥离Exif的GPS信息,前提是用户已经给PWA授予了存储和定位权限。
额外注意事项
如果你是将PWA打包为Hybrid应用分发,安卓14及以上版本要求应用获得ACCESS_MEDIA_LOCATION权限才能读取媒体文件中的GPS Exif信息,需要在AndroidManifest.xml中添加对应权限声明。所有涉及GPS信息采集的功能都需要明确告知用户,符合对应地区的隐私合规要求。
内容的提问来源于stack exchange,提问作者Andreas Bender
相关产品推荐
相关产品推荐

