【发布时间】:2015-08-10 18:37:20
【问题描述】:
我有一个非常具体的要求。我有一项服务需要以确切的图像块上传照片。 EXIF 信息可以忽略,但图像数据本身必须保持原样。该服务还必须跨平台工作。
到目前为止,我已经测试了 PC、Mac、各种浏览器以及各种 Android 手机,它们都按预期工作。当一张照片通过电子邮件、闪存驱动器、各种云服务(One Drive、Google Drive、Dropbox)从一个平台传输到另一个平台时,完全没有问题。照片保持其精确格式,相同的 EXIF 信息具有完全相同的大小,直至最后一个字节。
但是,当我处理 Apple 产品和服务时,就会出现问题。首先,每当将照片保存到 iPhone 中时,iPhone 似乎都会在图像中添加一些额外的 EXIF 数据,从而使图像尺寸稍大一些。但正如我上面所说,我的要求可以忽略 EXIF 信息,所以当它们上传到服务器端时我将它们剥离。不过,iPhone 似乎在上传到后端的过程中做得更多。它似乎在发送之前重新压缩图像。
当我使用 Safari 在 iPhone 中上传图像时,它到达服务器端时文件大小发生了巨大变化。我已经对此进行了多次测试,并使用了不同的图像。在某些情况下,尺寸会减小,而在某些情况下,尺寸会增大。当我使用 PC 或 Android 手机上传它们时,不会发生这种情况。应用程序本身就是一个网站,因此它是使用 HTML 和 JavaScript 编写的。
以下是结果示例:
图像 1 - 原始图像大小:317,185 字节
(不剥离 EXIF 数据)
使用 PC 或 Android 手机上传到服务器:317,185 字节
使用 iPhone 上传到服务器:368,698 字节
(剥离 EXIF 数据)
使用 PC 或 Android 手机上传到服务器:296,412 字节
使用 iPhone 上传到服务器:356,680 字节
图像 2 - 原始图像大小:3,630 字节
(不剥离 EXIF 数据)
使用 PC 或 Android 手机上传到服务器:3,630 字节
使用 iPhone 上传到服务器:2,752 字节
(剥离 EXIF 数据)
使用 PC 或 Android 手机上传到服务器:2,795 字节
使用 iPhone 上传到服务器:2,144 字节
我可以从上面得出的唯一结论是,iPhone 似乎在图像发送之前对其进行了重新压缩。为什么会这样,我该如何阻止它?
当然,如果它不是一个图像,它就不会破坏它吗?例如 .docx 或 .php?
【问题讨论】:
-
有人知道为什么吗?或者有其他人观察到这一点吗?
标签: javascript ios iphone image file-upload