Javascript FileReader在读取本地图像时会占用所有内存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript FileReader在读取本地图像时会占用所有内存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1833字,纯文字阅读大概需要3分钟。
内容图文
![Javascript FileReader在读取本地图像时会占用所有内存](/upload/InfoBanner/zyjiaocheng/962/d9e03c9855744e338a54e6da37ee9269.jpg)
我正在努力展示来自本地驱动器的大量图像的缩略图.
使用HTML5 File API似乎很有可能,但是当我尝试加载大量图像时,浏览器的内存使用量会超过屋顶和崩溃.
我认为问题是文件读取后FileReader不会释放内存.
最初我有一个新的FileReader实例和一个简单的循环来迭代图像.
为了解决这个内存问题,我将其替换为只有一个FileReader,但它并没有真正帮助.
这是相关和代码块:
<script>
var areader = new FileReader();
var counter=0;
function loadImage(file) {
var canvas = document.createElement("canvas");
areader.onload = function (event) {
var img = new Image;
img.onload = function () {
canvas.width = img.width / 100;
canvas.height = img.height / 100;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width / 100, img.height / 100);
var browse = document.getElementById("uploadInput");
if (browse.files.length > counter) {
counter++;
areader.result = null;//I don't think this makes any difference
loadImage(browse.files[counter]);
}
};
img.src = event.target.result;
};
areader.readAsDataURL(file);
preview.appendChild(canvas);
}
function showImages() {
loadImage(document.getElementById("uploadInput").files[0]);
}
如果有人遇到这个问题,我会做一些非常愚蠢的事情你能回答吗.
谢谢,
塔马斯
解决方法:
它不是文件阅读器,而是您使用base64中的整个图像数据作为图像的src属性,实际上将占用内存中133%的图像大小.
您应该使用Blob URLs:
var URL = window.URL || window.webkitURL;
function loadImage( file ) {
var canvas = document.createElement("canvas"),
img = new Image();
img.onload = function() {
canvas.width = img.width / 100;
canvas.height = img.height / 100;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width / 100, img.height / 100);
URL.revokeObjectURL( img.src );
img = null;
var browse = document.getElementById("uploadInput");
if (browse.files.length > counter) {
counter++;
loadImage(browse.files[counter]);
}
};
img.src = URL.createObjectURL( file );
preview.appendChild(canvas);
}
内容总结
以上是互联网集市为您收集整理的Javascript FileReader在读取本地图像时会占用所有内存全部内容,希望文章能够帮你解决Javascript FileReader在读取本地图像时会占用所有内存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。