Как сделать кадр изображения элементом холста?Как визуализировать blob на элементе холста?
До сих пор у меня есть эти два (упрощенная) функция для захвата изображения, преобразовать его в сгусток и в конечном итоге оказывает пятно на холсте in this codepen, it just returns the default black image.
var canvas = document.getElementById('canvas');
var input = document.getElementById('input');
var ctx = canvas.getContext('2d');
var photo;
function picToBlob() {
var file = input.files[0];
canvas.toBlob(function(blob) {
var newImg = document.createElement("img"),
url = URL.createObjectURL(blob);
newImg.onload = function() {
ctx.drawImage(this, 0, 0);
photo = blob;
URL.revokeObjectURL(url);
};
newImg.src = url;
}, file.type, 0.5);
canvas.renderImage(photo);
}
HTMLCanvasElement.prototype.renderImage = function(blob) {
var canvas = this;
var ctx = canvas.getContext('2d');
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 0, 0)
}
img.src = URL.createObjectURL(blob);
}
input.addEventListener('change', picToBlob, false);
Вы звоните 'canvas.toBlob'before вы рисуете на нем (в вашем' canvas.renderImage', который является асинхронной btw), и вам интересно, почему он выводит прозрачный образ? Я бы сказал, это потому, что вы не нарисовали что-либо на своем холсте в то время, когда пытались его экспортировать. Ps: в вашем 'renderImage', не забудьте также отменить объект URL, и вам, вероятно, потребуется изменить размер вашего холста. – Kaiido