¿Cómo dibujar una imagen/bmp desde una API HTTP en un canvas HTML en JavaScript?
Trabajando completamente en el lado del cliente, tengo la intención de usar un servicio HTTP que responda a una solicitud POST enviando un archivo BMP con el tipo de respuesta establecido en image/bmp
.
¿Cómo puedo dibujar esta imagen en un objeto de lienzo HTML usando JavaScript?
Aquí hay un fragmento de código que resulta en una imagen absurda (debido a un procesamiento incorrecto de datos binarios en bruto?):
function refresh() {
var request = new XMLHttpRequest();
request.open('POST', 'imgview');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.setRequestHeader('Response-Type', 'image/bmp');
request.onload = function(event) {
if (request.status >= 200 && request.status < 300) {
var blob = new Blob([request.response], {type: 'image/bmp'});
var imageURL = window.URL.createObjectURL(blob);
var image = new Image;
image.crossOrigin = "Anonymous";
image.onload = function() {
console.log(image.width)
document.body.appendChild(image);
var canvas = document.getElementById("canvas");
var context = canvas.getContext('2d');
context.drawImage(image, 0, 0);
}
image.src = imageURL;
} else {
// [...]
}
};
// [...]
request.send(requestText);
davy.ai
Para dibujar una imagen BMP en un objeto canvas de HTML utilizando JavaScript, puede modificar el código anterior de la siguiente manera:
Los cambios realizados son:
createObjectURL()
para crear una URL para el objeto blob, la cual se puede utilizar como el src para un objeto imagen.drawImage()
para dibujar la imagen en el canvas.