¿Hay alguna forma de leer el contenido de un lienzo HTML como datos binarios?
Por el momento, tengo el siguiente HTML para mostrar un archivo de entrada y el lienzo debajo de él:
<p><button id="myButton" type="button">Get Image Content</button></p>
<p>Input:<input id="fileInput" type="file"/></p>
<p>Canvas<canvas id="myCanvas" width="578" height="200"/></p>
Luego configuré mi archivo de entrada para configurar el lienzo correctamente, lo que funciona bien:
$('#fileInput').on('change', function() {
$.each(this.files, function() {
var image = new Image();
image.src = window.URL.createObjectURL(this);
image.onload = function() {
$("canvas").drawImage({
source: image,
x: 50, y: 50,
width: 100,
fromCenter: false
});
};
});
});
Ahora necesito obtener los datos binarios (codificados en Base64) del Canvas cuando se hace clic en el botón para enviar los datos al servidor ...
El resultado final es que necesito proporcionar al usuario la capacidad de seleccionar un archivo, recortarlo / redimensionarlo y luego hacer clic en un botón, momento en el cual la imagen editada se cargará en el servidor (no puedo hacer el lado del servidor recorte / cambio de tamaño debido a limitaciones del lado del servidor ...)
¡Cualquier ayuda sería genial! Salud
fuente
Respuesta corta:
const base64Canvas = canvas.toDataURL("image/jpeg").split(';base64,')[1];
fuente
;base64,
valor. Me volvió loco durante 45 minutosViendo cómo dibujas tu lienzo con
$("canvas").drawImage();
parece que usas jQuery Canvas ( jCanvas ) de Caleb Evans. De hecho, uso ese complemento y tiene una forma simple de recuperar la cadena de imagen de lienzo base64 con
$('canvas').getCanvasImage();
Aquí hay un violín funcional para ti: http://jsfiddle.net/e6nqzxpn/
fuente
canvas.toDataURL();
hace parecer más fácil, sin embargo.