canvas教程

基于HTML5 Canvas和jQuery 的画图工具的实现(2)

字号+ 作者:H5之家 来源:H5之家 2016-06-10 17:02 我要评论( )

在介绍 undo redo 的实现之前,要先讲一下canvas的toDataURL()方法。toDataURL()方法将canvas上所绘制的内容转换成式png式图片,并将图片通过base64编码,转换成形如如: data:image/png;base64,iVBORw0KGg .......

      在介绍 undo  redo 的实现之前,要先讲一下canvas的toDataURL()方法。toDataURL()方法将canvas上所绘制的内容转换成格式png格式图片,并将图片通过base64编码,转换成形如如:data:image/png;base64,iVBORw0KGg....... 的字符串,用来表示图片数据。(PS:对此比较困惑的读者可以自行查找关于HTML 图片 BASE64 存储的相关问题,这个知识点还是很重要的)

      undo redo 的原理实际上很简单,就是当每执行一次绘画,则将画板的内容转换成base64编码的字符串,存到缓存数组中去,然后在需要undo 的时候,将画板清空,再将缓存数组中的最后一次编辑的图片绘制到画板上即可。相关的实现细节如下代码所示:

//undo redo var history =new Array(); var cStep = -1; /** * put current canvas to cache */ function historyPush() { cStep++; if (cStep < history.length) { history.length = cStep; } history.push($("#myCanvas").get(0).toDataURL()); } /** * function: undo */ function undo() { if (cStep >= 0) { cStep--; var tempImage = new Image(); tempImage.src = history[cStep]; tempImage.onload = function () { ctx.drawImage(tempImage, 0, 0);}; } } /** * function: redo */ function redo() { if (cStep <history.length-1) { clearCanvas(); cStep++; var tempImage = new Image(); tempImage.src = history[cStep]; tempImage.onload = function () { ctx.drawImage(tempImage, 0, 0); }; } }
画板信息存为图片

代码如下:

/** * save canvas content as image */ function saveItAsImage() { var image = $("#myCanvas").get(0).toDataURL("image/png").replace("image/png", "image/octet-stream"); //locally save window.location.href=image; }

源码下载       1. 读者可以去我的GitHub jPainter项目下下载,

       2. 或者直接使用git 工具:https://github.com/LuanLouis/jPainter.git

       3. 或者 通过 下载



-----------------------------------------------------------------------------------------------------------------------------------------

本文源自  ,如需转载,请注明出处,谢谢!



 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • html5canvas核心技术图形、动画与游戏开发源码

    html5canvas核心技术图形、动画与游戏开发源码

    2017-05-02 17:42

  • 打印html5中Canvas的方法

    打印html5中Canvas的方法

    2017-05-01 15:03

  • HTML5+Canvas调用手机拍照功能实现图片上传(下)

    HTML5+Canvas调用手机拍照功能实现图片上传(下)

    2017-04-30 17:00

  • HTML5新特性详解(三)

    HTML5新特性详解(三)

    2017-04-30 16:03

网友点评