Ваш JSFiddle задан, ReferenceError: Canvas2Image is not defined
нажав кнопку «Сохранить PNG». Поэтому проверьте код (не скрипку) на ту же ошибку.
ОБНОВЛЕНИЕ
См. Этот пример JSFiddle в качестве ссылки. Пусть это поможет вам.
ОБНОВЛЕНИЕ 2
Я помещаю код в свой, проверьте его. Надеюсь, это будет ваше решение ..!
Рабочий результат с FF v44 и его работой. Взято с помощью кода JSFiddle
$(function() {
$("#btnSave").click(function() {
html2canvas($("#widget"), {
onrendered: function(canvas) {
var context=canvas.getContext("2d"); // returns the 2d context object
var img=new Image() //creates a variable for a new image
img.src= "http://lorempixel.com/400/200/"; // specifies the location of the image
context.drawImage(img,0,50); // draws the image at the specified x and y location
// Convert and download as image
theCanvas = canvas;
document.body.appendChild(canvas);
// Convert and download as image
Canvas2Image.saveAsPNG(canvas);
$("#img-out").append(canvas);
}
});
});
});
ОБНОВЛЕНИЕ 3 ( 12/29/2016 ) JSFiddle
После исследования выяснилось, что проблема заключается в том, что мы назначаем только источник изображения, который только передает сообщение браузеру для извлечения данных.
Дополнительный элемент изображения может быть недоступен в браузере, когда вы нажимаете для рисования холста. Мы просто передаем код, чтобы загрузить его, и все сделано.
Измените код, чтобы решить проблему с хромированием OP, как показано ниже:
img.onload = function() {
context.drawImage(img, 0, 50);// draws the image at the specified x and y location
}
ОБНОВЛЕНИЕ 4 JSFiddle
Сделать динамическое положение изображения в соответствии с требованиями OP.