【问题标题】:How to remove EXIF data from image using javascript?如何使用 javascript 从图像中删除 EXIF 数据?
【发布时间】:2015-01-14 03:12:43
【问题描述】:

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

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

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

裁剪是通过在旧图像中使用ctx.drawImage(...) 绘制新图像来完成的 我终于用c.toDataURL()得到了新的图像数据。

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

【问题讨论】:

  • 也许可以展示你在 toDataUrl 上的表现如何?我认为画布不会对你正在做的事情有任何问题。
  • @Woho87 我假设原始内容是没有 URLFileBlob是自己的,对吧?您的问题实际上可能是由于从 base64 url​​'d 图像导入画布,而不是从中导出。尝试yourImgSrc = window.URL.createObjectURL(yourFile);,然后将其导入画布。
  • 画布输出中不应有任何exif...

标签: javascript ios image exif


【解决方案1】:

注意,你写的是:

图像被破坏

我认为问题不在于 EXIF 数据。我想你有iOS canvas limitation

canvas 元素的最大尺寸为 3 兆像素,适用于具有 小于 256 MB RAM 和 5 兆像素的设备 等于 256 MB RAM。

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

存在修复 iOS 限制的已知库:

【讨论】:

    猜你喜欢
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2013-11-16
    • 2014-12-15
    相关资源
    最近更新 更多