如何拍摄画布截图?
如何创建图像,它将包含位于画布上的图像+自由区?
答案 0 :(得分:7)
这取决于你想要做什么,最简单的方法是在你的画布上使用toDataUrl。
canvas.toDataURL('png')
这会将您的画布编码为base64,然后您可以在像这样的下载链接中使用它
<a href="%dataURI%" download>download</a>
或者只是将它贴在图像标签的dom中。
如果您想要将实际副本存储在图像中,您可以使用任何语言将该base64转换为图像文件来编写更多后端的控制器。
有关详细信息,请参阅此帖子
How to save a PNG image server-side, from a base64 data string
答案 1 :(得分:5)
这取决于您的框架,但基本上您可以使用canvas.toDataURL()
这是一个完整的例子
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="578" height="200"></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
// draw cloud
context.beginPath();
context.moveTo(170, 80);
context.bezierCurveTo(130, 100, 130, 150, 230, 150);
context.bezierCurveTo(250, 180, 320, 180, 340, 150);
context.bezierCurveTo(420, 150, 420, 120, 390, 100);
context.bezierCurveTo(430, 40, 370, 30, 340, 50);
context.bezierCurveTo(320, 5, 250, 20, 250, 50);
context.bezierCurveTo(200, 5, 150, 20, 170, 80);
context.closePath();
context.lineWidth = 5;
context.fillStyle = '#8ED6FF';
context.fill();
context.strokeStyle = '#0000ff';
context.stroke();
// save canvas image as data url (png format by default)
var dataURL = canvas.toDataURL();
</script>
</body>
</html>
dataUrl将包含图像,您可以将其保存在任何地方。