Есть ли способ прочитать содержимое холста HTML как двоичные данные?
На данный момент у меня есть следующий HTML-код для отображения входного файла и холста под ним:
<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>
Затем я настроил свой входной файл, чтобы правильно настроить холст, который отлично работает:
$('#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
});
};
});
});
Теперь мне нужно получить двоичные данные (в кодировке Base64) с холста при нажатии кнопки, чтобы он отправил данные на сервер ...
Конечным результатом является то, что мне нужно предоставить пользователю возможность выбрать файл, обрезать / изменить его размер, а затем нажать кнопку, после чего отредактированное изображение будет загружено на сервер (я не могу делать на стороне сервера обрезка / изменение размера из-за ограничений на стороне сервера ...)
Любая помощь была бы замечательной! Ура
источник
Краткий ответ:
const base64Canvas = canvas.toDataURL("image/jpeg").split(';base64,')[1];
источник
;base64,
значение. Сводил меня с ума на 45 минутВидя, как вы рисуете свой холст с
$("canvas").drawImage();
похоже, что вы используете jQuery Canvas ( jCanvas ) Калеба Эванса. Я действительно использую этот плагин, и у него есть простой способ получить строку изображения base64 холста с помощью
$('canvas').getCanvasImage();
Вот вам рабочий Fiddle: http://jsfiddle.net/e6nqzxpn/
источник
canvas.toDataURL();
однако это кажется проще.