這似乎是一個長期存在的問題,我認爲很多人希望一勞永逸地達到底部。在在處理數據之前加載圖像並等待image.complete
image = new Image();
image.src = imagePath;
然後暫停鏈存在
的問題等待的東西,如image.complete ...
while(HHGimg.height == 0)
或
while(!image.complete)
{
setTimeout(function(){ foo },100);
}
其次畫布轉換爲base64方法。
var canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
var canvasContext = canvas.getContext('2d');
canvasContext.drawImage(image, 0, 0, canvas.width, canvas.height);
imageData = canvas.toDataURL('image/jpeg');
問題是暫停以確保image.complete完成其工作並將有效的對象傳遞給畫布。
我們需要的是,以確保暫停足夠沒有一個循環,攤點腳本(這個「而」法似乎)
如何等待任何想法結束才能完成的方法繼續之前有效的圖像...
我的整個功能如下...
<script type="text/javascript">
function imageFetch(imgpath, imgname)
{
imgdata = "";
image = new Image();
image.src = imgpath + imgname;;
while(image.height == 0)
{
setTimeout(function(){imgdata = "";},100);
}
var canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
var canvasContext = canvas.getContext('2d');
canvasContext.drawImage(image, 0, 0, canvas.width, canvas.height);
imgdata = canvas.toDataURL('image/jpeg');
return imgdata;
}
</script>
...但直到暫停,以確保圖像完全加載一些的回報是簡單的「數據: ,「
現在轉交給你。任何想法如何擊敗這一個?
都能跟得上。試過了。畫布寬度和高度設置不正確。你仍然會得到一個null base64輸出。我需要檢查在設置canvas元素之前加載的圖像。 – TJS101
@ TJS101嘗試編輯後的版本。 –
沒有。 image.onload不會觸發。使用FF14.01和Fbug和Safari 6.0。 – TJS101