【发布时间】:2012-05-03 19:25:50
【问题描述】:
我正在尝试在手机上制作一个上传图片的网页,但是一旦图片太大,它总是会耗尽内存并且浏览器会退出。 这是我的代码:
<input type="file" id="testFile" />
<img src="" style="position:relative;" id="uploadingImg" />
function setImage() {
var fileList = this.files;
var imageType = /image/;
for(var i = 0;i < fileList.length;i++) {
document.getElementById('uploadingImg').file = fileList[i];
var reader = new FileReader();
reader.onload = function(e) {
document.getElementById('uploadingImg').src = e.target.result;
}
reader.readAsDataURL(fileList[i]);
}
}
document.getElementById('testFile').addEventListener('change', setImage, false);
有谁知道如何使用<img> 或<canvas> 元素预览一张图片?
请不要使用"readAsDataURL",因为当涉及到document.getElementById('uploadingImg').src = e.target.result;
它将耗尽内存。因为base64的Url占用内存太多,内存中存在很多三四份。
如何通过画布使用"readAsArrayBuffer" 和"drawImage"?
还是其他方法?
如果我不使用"readAsDataUrl"可以在本地磁盘中预览一张图片,一切都可以。
谢谢!
【问题讨论】:
标签: image html input base64 filereader