我有一个simple mobile app。它首先提示用户选择图像,然后通过下面的代码在本地加载并显示在画布上:加载图片后,移动应用程序“由于内存不足而无法加载之前的操作”?
function handleFileSelect(evt) {
var files = evt.target.files;
var f = files[0];
console.log(evt);
var ctx = document.getElementById("myCanvas").getContext('2d'),
img = new Image(),
f = document.getElementById("uploadbutton").files[0],
url = window.URL || window.webkitURL,
src = url.createObjectURL(f);
img.src = src;
lastImage = img;
img.onload = function()
{
window.requestAnimationFrame(function(){
var w = window.innerWidth;
var h = window.innerHeight;
ctx.clearRect(0, 0, w, h);
ctx.drawImage(lastImage, 0, 0);
//url.revokeObjectURL(src);
});
}}
在我的网页浏览器,我的手机上,加载图像,并在画布上显示但是,我已经听到一位用户使用Google Chrome在Razr Maxx HD上运行它,他们会收到“错误:由于内存不足,无法加载之前的操作”。我怀疑这个问题不能通过在图像中进行首次读取然后在显示之前对其进行缩放来解决,因为即使没有显示,完整图像也将被加载到内存中。有没有办法在没有首先加载整个事物的情况下将缩放版本的图像加载到内存中?任何想法是什么导致这个问题,因为我能够在我的银河S3在铬上加载大量图像,并且Galaxy S3与Razr Maxx HD具有相同数量的RAM?
图片在本地选择。我怎样才能在本地请求缩放版本的图像? –
我没有意识到这一点。有不止一个版本,可能将它们分组到目录中,而javascript可以选择最好的版本。用户在第一次加载或第10次图像时是否耗尽内存? –
他们跑出了第一张图片。 –