Javascript 将chart.js导出到固定大小的图表中
我正在尝试从使用chart.js绘制的图表中获取图像(例如png)。 其想法是将此图像发送到后端,然后将其包含在更大的报告中 从图表的画布中生成一个图像非常容易——我可以做如下事情Javascript 将chart.js导出到固定大小的图表中,javascript,image,canvas,chart.js,Javascript,Image,Canvas,Chart.js,我正在尝试从使用chart.js绘制的图表中获取图像(例如png)。 其想法是将此图像发送到后端,然后将其包含在更大的报告中 从图表的画布中生成一个图像非常容易——我可以做如下事情 var canvas = document.getElementById('canvasIwantToRenderForTheBackend'); canvas.toDataURL("image/png"); // or canvas.getImageData(); 我遇到的问题是,这将使图表图像与用户创建报表时的
var canvas = document.getElementById('canvasIwantToRenderForTheBackend');
canvas.toDataURL("image/png");
// or
canvas.getImageData();
我遇到的问题是,这将使图表图像与用户创建报表时的外观相同
我需要的是创建一个固定大小的画布,在其中绘制图表,然后将该画布导出到图像中-基本上我不希望仅仅因为用户缩小了浏览器窗口,并且它在浏览器中看起来被压缩而压缩图像(chartjs试图使图表在压缩的框架内看起来“漂亮”)。此外,我不希望用户看到的画布被调整大小或做奇怪的事情
p、 s:我试着复制画布,但我没有将其附加到DOM中,调整其大小,然后从中生成图像——但不知何故,这只是一个空图像。
实际上,我试图在浏览器控制台中操纵画布的宽度,图表就消失了
p、 注意,我不想调整图像的大小-我可以这样做,我想调整chartjs绘制图表的画布的大小,因为根据画布的大小,图表看起来不同-我希望得到的图像独立于用户现在看到的内容。我使用的解决方案是在DOM中创建固定大小的画布,但我将其放置在可见屏幕之外 基本上,我将要用于渲染图像的画布放在下面的div中
<div style="position: absolute; left: -2000px">
<canvas id="canvasIwantToRenderForTheBackend" <!-- here go all the attrs I want to use for this canvas--> ></canvas>
</div>
这样,chartjs就被迫将图表实际渲染到画布中