[英]canvas.toDataURL returns blank image
我想在画布上绘制一个表格,然后将画布另存为图像。 (需要创建一个pdf)
有趣的是,表格显示在画布上,但我无法使用 .toDataURL 转换它,它只是返回一个空白图像。
控制台中没有警报。
function getImgDataTable(tableContainer) {
var tableArea = tableContainer.getElementsByTagName('table')[0].parentNode;
var doc = tableContainer.ownerDocument;
var canvas = doc.createElement('canvas');
canvas.setAttribute('width', tableArea.offsetWidth);
canvas.setAttribute('height', tableArea.offsetHeight);
doc.body.appendChild(canvas);
/* using rasterizeHTML.js */
rasterizeHTML.drawHTML('<div style="font-size: 20px;">' + $("#data-table-chart-0").html()+ '</div>', canvas);
var imgDataTable = canvas.toDataURL();
console.log(imgDataTable);
return imgDataTable;
}
我没有想法,每一个见解都值得赞赏。
试试这个http://jsfiddle.net/XtUFt/ html
<div id="c"></div>
<div id="i"></div>
JS
var canvas = document.createElement("canvas");
canvas.height = canvas.width = 200;
$('#c').append(canvas);
var ctx = canvas.getContext("2d");
//draw a circle
ctx.beginPath();
ctx.arc(75, 75, 70, 0, Math.PI*2, true);
ctx.closePath();
ctx.fill();
var dataURL = canvas.toDataURL("image/png");
$('#i').append($('<img/>', { src : dataURL }));
它可能会返回空白,因为您正在尝试获取toDataURL,而无需等待浏览器将图像加载到画布元素中。 所以用setTimeOut包装它。
var canvas = document.createElement("canvas");
canvas.height = canvas.width = 200;
$('#c').append(canvas);
var ctx = canvas.getContext("2d");
//draw a circle
ctx.beginPath();
ctx.arc(75, 75, 70, 0, Math.PI*2, true);
ctx.closePath();
ctx.fill();
setTimeout(function(){
var dataURL = canvas.toDataURL("image/png");
}, 5000);
$('#i').append($('<img/>', { src : dataURL }));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.