我有一個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次圖像時是否耗盡內存? –
他們跑出了第一張圖片。 –