11

我从 HTML 文件输入中读取了一个文件。对于 iOS,我可以从相机中拍照。问题是如果你用相机拍照,内容将包括 EXIF 数据(至少如果我使用 FileReader API 读取文件内容)。

如果图像包含 EXIF 数据,我将无法使用画布裁剪。因为每次我打电话时图像都会被破坏.toDataURL()。我的猜测是它无法识别 EXIF 数据,也不知道如何使用 EXIF 数据裁剪图像。

文件内容由 .base64 编码 FileReader.readAsDataURL()。我将它插入到 img.src 中。

裁剪是通过ctx.drawImage(...)在旧图像的基础上绘制新图像来完成的,我最终得到了新的图像数据c.toDataURL()

所以我的问题是如何使用 javascript 删除 EXIF 数据?

4

1 回答 1

5

请注意,您写道:

图像被破坏

我认为这个问题不在 EXIF 数据中。我认为你有iOS 画布限制

对于 RAM 小于 256 MB 的设备,画布元素的最大大小为 3 兆像素,而对于 RAM 大于或等于 256 MB 的设备,画布元素的最大大小为 5 兆像素。

此限制不会引发任何错误,因此您将尝试渲染或读取 6MB 图像,您将获得损坏的 blob/dataURL 字符串等等。你会认为 File API 坏了,canvas 方法 toDataURL/toBlob 坏了,你是对的。但是错误不在浏览器中,这是系统限制。

有修复 iOS 限制的已知库:

于 2015-01-13T19:12:43.273 回答