12
美好的一天人。動態添加圖像到畫布
我想知道是否有任何方法來動態添加圖像從用戶計算機到畫布。
比如我有:
<canvas id="canvas"></canvas>
<input type="file" id="image-chooser">
如果與輸入的用戶選擇圖片它添加到畫布上。
請告訴我任何要遵循的路徑。
謝謝!
美好的一天人。動態添加圖像到畫布
我想知道是否有任何方法來動態添加圖像從用戶計算機到畫布。
比如我有:
<canvas id="canvas"></canvas>
<input type="file" id="image-chooser">
如果與輸入的用戶選擇圖片它添加到畫布上。
請告訴我任何要遵循的路徑。
謝謝!
爲此,您應該熟悉HTML5 Canvas API和File API。當然,這個功能在瀏覽器中只支持HTML5 API。
的方法做到這一點是:
change
事件到文件輸入元件。img
元素並在畫布上繪製它。我在jsfiddle上做了一個簡單的example。代碼如下所示:
<canvas id="canvas"></canvas>
<input type="file" id="file-input">
<script>
$(function() {
$('#file-input').change(function(e) {
var file = e.target.files[0],
imageType = /image.*/;
if (!file.type.match(imageType))
return;
var reader = new FileReader();
reader.onload = fileOnload;
reader.readAsDataURL(file);
});
function fileOnload(e) {
var $img = $('<img>', { src: e.target.result });
$img.load(function() {
var canvas = $('#canvas')[0];
var context = canvas.getContext('2d');
canvas.width = this.naturalWidth;
canvas.height = this.naturalHeight;
context.drawImage(this, 0, 0);
});
}
});
</script>
哇,你是真人維基。謝謝! –
好的信息,只是content.drawimage應該在$ img.load(funciton(){...})上運行; - 一些較大的圖像必須先加載,然後才能正確地繪製到畫布上。 – wesbos
@Wes謝謝!我解決了。 –