当前位置: 首页 > 文档资料 > HTML5 Canvas 实战 >

3.10 画布绘图另存为图像

优质
小牛编辑
139浏览
2023-12-01

除了把画布绘图保存到本地存储或离线数据库,我们也可以使用data URL把画布绘图保存为图像,以便用户再把它保存到本地计算机。本节,我们将获取画布绘图的data URL,再把它设置为image对象的源,以便用户可以右击,作为PNG图像进行下载。

绘制步骤

按照以下步骤,把画布绘图另存为图像:

1. 定义画布上下文,并绘制一幅云状图形:

window.onload = function(){
  var canvas  = document.getElementById("myCanvas");
  var context = canvas.getContext("2d");
  //绘制云状图形
  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();

2. 获取data URL:

  // 画布图像另存为data URL数据(默认为png格式)
  var dataURL  = canvas.toDataURL();

3. 把图像标签的源设置为data URL,以便用户可以下载它:

  // 把canvasImg的src设置为dataURL,因此可以被另存为图像
  document.getElementById("canvasImg").src  = dataURL;
};

4. 在HTML文档的body部分嵌入<canvas>标签,并增加一个<img>标签,用来容纳画布绘图:

<canvas id="myCanvas" width="578" height="200">
</canvas>
<p>
Image:
</p>
<img id="canvasImg" alt="Right click to save me!">

工作原理

在画布上画了一些东西之后,调用toDataURL()方法得到画布绘图的data URL,再把image对象的src属性设置为该data URL,就可以创建一个用户可以保存的图像。图像加载完成后(这几乎是瞬间完成,因为图像是直接被加载,不必向Web服务器发送请求),用户就可以在图像上右击,把它保存到本地计算机。