我从HTML文件输入中读取了一个文件。对于iOS,我可以从相机拍照。问题是,如果你用相机拍照,内容将包括EXIF数据(至少如果我用FileReader API读取文件内容)。
如果图像包含EXIF数据,则无法使用画布裁剪。因为 每次拨打
.toDataURL()
时,图像都会被破坏。我的猜测是 它无法识别EXIF数据,也不知道如何裁剪图像 EXIF数据。文件内容由base64编码
FileReader.readAsDataURL()
。我将其插入img.src。通过在旧图像中使用
ctx.drawImage(...)
绘制新图像来完成裁剪 我终于用c.toDataURL()
得到了新的图像数据。
所以我的问题是如何使用javascript删除EXIF数据?
答案 0 :(得分:5)
注意,你写道:
图像被破坏
我认为这个问题不在EXIF数据中。我想你有iOS canvas limitation:
对于具有的设备,canvas元素的最大大小为3百万像素 低于256 MB RAM和500万像素,用于具有更高或更高的设备 等于256 MB RAM。
此限制不会抛出任何错误,因此您将尝试渲染或读取6MB图像,您将获得损坏的blob / dataURL字符串,依此类推。而你会认为File API已经破解,画布方法toDataURL / toBlob被破坏了,你就是对的。但是错误不在浏览器中,这是一个系统限制。
已知用于修复iOS限制的库: