我仍然不熟悉這整個畫布的事情,有什麼我有問題,即將圖像內的內容保存爲圖像。這裏是我的fiddle無法保存圖像內<canvas>
var img = new Image();
img.src = 'https://mdn.mozillademos.org/files/5397/rhino.jpg';
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
img.onload = function() {
ctx.drawImage(img, 0, 0);
img.style.display = 'none';
};
var link = document.createElement('a');
link.innerHTML = 'Save';
link.href = document.getElementById('canvas').toDataURL();
link.addEventListener('click', function(e) {
link.download = "imagename.png";
}, false);
document.body.appendChild(link);
<canvas id="canvas" width="300" height="300"></canvas>
雖然保存對話框出現就好了,保存的圖像是空的,就像它不會捕捉含量可言。
任何幫助表示讚賞,如果伴隨着如何/爲什麼我的代碼不起作用,您的代碼將會。謝謝。
編輯:忘了鏈接小提琴我基於here我的代碼基礎不同的是,小提琴將繪圖保存在畫布中,而我寫的僅僅是從另一個來源保存靜態圖像。
可能的重複[如何保存畫布作爲一個圖像與canvas.toDataURL()?](https://stackoverflow.com/questions/10673122/how-to-save-canvas-as-an-image-with -canvas-todataurl) –
我已經嘗試過那一個(和許多其他)無濟於事。也許是因爲我的理解還不夠。謝謝你仍然在提醒我。 – nana77
幾個問題:您正在繪製交叉陰影圖像。這會污染你的畫布,阻止它的出口方法。另外,'image.onload'是異步的。這意味着在代碼的同步部分完成執行後,您將實際繪製圖像,這意味着在您調用'toDataURL'時,畫布上仍然沒有畫任何東西。只有在繪製圖像後才能調用導出部分。 – Kaiido