将 Canvas & 图例另存为图像
Save Canvas & Legend as image
我有一个现有应用程序使用 html canvas 来生成图表。保存图形时还有一个图例也需要保存。目前,如果我右击保存图片,只保存图表。
我遇到了 Cavas2Image.js 和 html2canvas.js 并且在我的项目中都实现了。
我连接了一个按钮来保存图像。目前,点击它会创建一个下载文件,但它只是称为下载,没有扩展名。如果我添加扩展名 .png,它就会正常工作。我不知道为什么这不是由 Cavas2Image 完成的,这就是使用该库的全部意义所在。我设置了断点,它正在点击添加 .png 扩展名的方法。
基于canvas2image.js的documentation(或缺少),我应该可以使用单一方法来保存我的canvas:
Canvas2Image.saveAsImage(canvas, null, null, "png");
这是我的完整代码块:
<div class="row">
<div class="col-md-12">
<div id="widget" class="canvas__container">
<canvas id="lineChartCanvas" class="chart chart-line canvas__canvas" chart-data="data" chart-labels="labels" style="height: 300px; width: 95%;"
chart-legend="true" chart-series="series" chart-click="onClick"></canvas>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 text-center">
<input type="button" class="btn btn-primary" id="btnSave" value="EXPORT CHART" />
</div>
</div>
<script>
$(function () {
$("#btnSave").click(function () {
html2canvas($("#widget"), {
onrendered: function (canvas) {
theCanvas = canvas;
document.body.appendChild(canvas);
// Convert and download as image
//Canvas2Image.saveAsPNG(canvas);
Canvas2Image.saveAsImage(canvas, null, null, "png");
}
});
});
});
</script>
我正在使用上面列出的两个 javascript 文件,尽管它们未在此处显示。
看看。
您只需使用 html2canvas 即可。
我已经根据 linked 的答案修改了您的代码,现在可以使用了。虽然,我不太确定这是否是您想要的。您可以随意命名文件并将其保存为 png(fiddle 为 jpg)。
检查一下,如果您需要更多帮助,请告诉我。
$("#btnSave").click(function () {
canvasdiv = document.getElementById('lineChartCanvas');
html2canvas(canvasdiv,
{
onrendered: function (canvas) {
var a = document.createElement('a');
// toDataURL defaults to png, so we need to request a jpeg, then convert for file download.
a.href = canvas.toDataURL("image/png").replace("image/jpeg", "image/octet-stream");
a.download = 'somefilename.jpg';
a.click();
}
});
});
这是 JSFiddle* 示例的 link。
*
fiddle 加载 bootstrap
我有一个现有应用程序使用 html canvas 来生成图表。保存图形时还有一个图例也需要保存。目前,如果我右击保存图片,只保存图表。
我遇到了 Cavas2Image.js 和 html2canvas.js 并且在我的项目中都实现了。
我连接了一个按钮来保存图像。目前,点击它会创建一个下载文件,但它只是称为下载,没有扩展名。如果我添加扩展名 .png,它就会正常工作。我不知道为什么这不是由 Cavas2Image 完成的,这就是使用该库的全部意义所在。我设置了断点,它正在点击添加 .png 扩展名的方法。
基于canvas2image.js的documentation(或缺少),我应该可以使用单一方法来保存我的canvas:
Canvas2Image.saveAsImage(canvas, null, null, "png");
这是我的完整代码块:
<div class="row">
<div class="col-md-12">
<div id="widget" class="canvas__container">
<canvas id="lineChartCanvas" class="chart chart-line canvas__canvas" chart-data="data" chart-labels="labels" style="height: 300px; width: 95%;"
chart-legend="true" chart-series="series" chart-click="onClick"></canvas>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 text-center">
<input type="button" class="btn btn-primary" id="btnSave" value="EXPORT CHART" />
</div>
</div>
<script>
$(function () {
$("#btnSave").click(function () {
html2canvas($("#widget"), {
onrendered: function (canvas) {
theCanvas = canvas;
document.body.appendChild(canvas);
// Convert and download as image
//Canvas2Image.saveAsPNG(canvas);
Canvas2Image.saveAsImage(canvas, null, null, "png");
}
});
});
});
</script>
我正在使用上面列出的两个 javascript 文件,尽管它们未在此处显示。
看看
您只需使用 html2canvas 即可。 我已经根据 linked 的答案修改了您的代码,现在可以使用了。虽然,我不太确定这是否是您想要的。您可以随意命名文件并将其保存为 png(fiddle 为 jpg)。
检查一下,如果您需要更多帮助,请告诉我。
$("#btnSave").click(function () {
canvasdiv = document.getElementById('lineChartCanvas');
html2canvas(canvasdiv,
{
onrendered: function (canvas) {
var a = document.createElement('a');
// toDataURL defaults to png, so we need to request a jpeg, then convert for file download.
a.href = canvas.toDataURL("image/png").replace("image/jpeg", "image/octet-stream");
a.download = 'somefilename.jpg';
a.click();
}
});
});
这是 JSFiddle* 示例的 link。
* fiddle 加载 bootstrap