我正在构建一个移动网站,我想使用相机 API 来拍照。图像应显示在网站上并上传到服务器。根据MDN 上的 Camera API 介绍 https://developer.mozilla.org/en-US/docs/Web/Guide/API/Camera可以使用以下方式在网站上访问和显示图像FileReader
or window.URL.createObjectURL
. I tested http://lab.html5test.com/files/这些可能的解决方案在 iPad(Safari 和 Chrome)和 Android 平板电脑(Chrome 和 Firefox)上成功实现。
有什么区别FileReader
and window.URL.createObjectURL
?我认为window.URL.createObjectURL
较新,但还不是标准。性能上有区别吗?
有差别。
- time
-
createObjectURL
同步执行(立即)
-
FileReader.readAsDataURL
异步执行(一段时间后)
- 内存使用情况
-
createObjectURL
返回带哈希的 url,并将对象存储在内存中,直到文档触发卸载事件(例如文档关闭)或执行revokeObjectURL
-
FileReader.readAsDataURL
回报base64
包含许多字符,并且比 blob url 使用更多内存,但在不使用时从内存中删除(通过垃圾收集器)
- support
-
createObjectURL
从 IE 10 和所有现代浏览器开始
-
FileReader.readAsDataURL
从 IE 10 和所有现代浏览器开始
对我来说,最好使用 blob url(通过createObjectURL
),效率更高,速度更快,但是如果使用很多对象url,则需要
通过以下方式释放这些网址revokeObjectURL
(释放内存)。
例如,您可以在 Image onload 处理程序中调用 URL.revokeObjectURL,并且 Image 对象将保留图像数据,而不会丢失它,Nahuel Greco (c)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)