我有一个canvas,声明如下:
<canvas class="grph" id="log_graph"></canvas>
字符串
在上面画了一个折线图后,我想把它上传到服务器,所以我这样做:
var canvas = document.getElementById('log_graph'),
ctx = canvas.getContext('2d');
var upload = (blob) => {
var formdata = new FormData();
formdata.append('img', blob, 'filename.png');
$.post({
url: `${app.server}/upload-img`,
data: formdata,
processData: false,
contentType: false,
success: (data) => {
console.log(`rc for upload: ${data}`);
},
error: function (jqXHR, textStatus, errorThrown) {
console.warn("Error, status = " + textStatus + ", " +
"error thrown: " + errorThrown);
}
});
}
canvas.toBlob(upload, 'image/png');
型
不幸的是,上传的图表是透明的,在深色风格的图像查看器上看起来不太好。我想将背景设置为纯白色,但似乎 * chart.js * 不支持。
使用background-color css样式很容易设置屏幕背景色,但这不会影响上传的图像,它仍然是透明的颜色。
2条答案
按热度按时间mpgws1up1#
我做的方法如下:我保存画布的状态,填充背景,导出,然后恢复以摆脱背景。
转换成代码,这给出了以下代码:
字符串
o0lyfsai2#
所以我找到的一个解决方案是创建一个空画布,用实心白色填充它,然后将图表复制到它上面,然后上传新画布。它是这样的:
字符串
希望这些知识分享能帮助到别人!