iPhone OS 图像/照片大小调整工具更改 EXIF 方向数据

Posted

技术标签:

【中文标题】iPhone OS 图像/照片大小调整工具更改 EXIF 方向数据【英文标题】:iPhone OS image/photo resizing tool changing EXIF orientation data 【发布时间】:2021-06-14 03:14:30 【问题描述】:

看起来像是从 ios 设备拍摄 HDR 照片时,因为 Apple 不会旋转图像并全部以横向拍摄,所以有 EXIF 元数据(特定方向)告诉其他软件如何呈现该照片。

当有人尝试发送/分享/使用/上传 iPhone 相机拍摄的原始 HEIC 图像的调整大小版本时,就会发生奇怪的事情。

该操作系统调整大小工具弄乱了宝贵的 EXIF 方向元数据,因此我们得到的图像未旋转且不包含任何用于实际正确呈现的元数据。

我们有一个 php 服务器,它接收人们上传的此类照片,其中许多人抱怨通过 webview 上传调整大小的照片并得到一个混乱的方向。

不知道如何解决这个问题,考虑到我们最终得到的照片的 exif 方向值1(这意味着不需要方向) - 顺便说一句iOS 调整大小工具(即使在调整大小之前图像的 exif 方向值 6)?

https://drive.google.com/file/d/168ZxbXI0IFofoTr7pPDOULtE-VO7HcVC/view?usp=sharing

找不到实际分享原始 HEIC 图像的方法,所以我只分享了 Actual Size 选项 (image00006) 和 Small 的输出> 选项(image00001)。示例照片中的手指始终指向天花板,并且拍照时 iPhone 的方向是纵向的。

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题!我写了一个小脚本来提醒用户方向值是什么。只要它是实际图像大小,它就会说例如 6(这意味着它是横向的,iphone 将图像显示为正面朝上,这很好)。

但问题在于,当用户将实际尺寸更改为小、中或大时,并且该方向似乎默认为 1,即使新调整大小的图像仍然是横向的。

我在某处读到,当 iphone 调整图像大小时,它会在上传之前复制一个全新的“jpeg”文件。当它这样做时,它似乎没有继承 exif 方向值(例如 6),它只是将所有内容默认为 1!

因此,任何在调整大小时处理它的 php 逻辑或 javascript 都无法正确旋转它,因为即使图像是横向的,它也会将 exif 数据读取为 1 值。然而,实际大小(原始图像)的 exif 值为 6,并且无论开发人员使用 php 还是 javascript exif 数据来执行此操作,IS 都正确旋转。

这个问题好像是一年前有用户在github上贴出来的,现在还什么都没做。如果这是一个ios问题,我希望高人能看看这个。

【讨论】:

听起来确实像一个 iOS 错误。知道如何打开错误报告吗?我已经将它添加到 iOS 反馈频道,但我觉得这还不足以引起人们的关注。.. 我也不知道。但是这里有一篇关于 github 的冗长帖子,最后一次更新大约是一年前,因为其他几个人也被困在这个问题上。 github.com/disintegration/imaging/issues/104图片方向问题

以上是关于iPhone OS 图像/照片大小调整工具更改 EXIF 方向数据的主要内容,如果未能解决你的问题,请参考以下文章

在发送到服务器之前在 iPhone 中调整照片大小

从 iPhone 的照片库中调整方形裁剪图像的正确方法而不会失真

在 iPhone 上的 UIImagePicker 中重新调整图像大小

在 iOS 中调整图像大小并保持其纵横比

如何调整图片kb大小

如何查找 iPhone 相机照片的大小以及如何调整大小?