Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将chart.js导出到固定大小的图表中_Javascript_Image_Canvas_Chart.js - Fatal编程技术网

Javascript 将chart.js导出到固定大小的图表中

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(); 我遇到的问题是,这将使图表图像与用户创建报表时的

我正在尝试从使用chart.js绘制的图表中获取图像(例如png)。 其想法是将此图像发送到后端,然后将其包含在更大的报告中

从图表的画布中生成一个图像非常容易——我可以做如下事情

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就被迫将图表实际渲染到画布中