将HTML5 Canvas的内容保存为图片借助toDataURL实现


Posted in HTML / CSS onMay 20, 2013

主要思想是借助Canvas自己的API - toDataURL()来实现,整个实现
HTML + JavaScript的代码很简单。

复制代码
代码如下:

<html>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<head>
<script>
window.onload = function() {
draw();
var saveButton = document.getElementById("saveImageBtn");
bindButtonEvent(saveButton, "click", saveImageInfo);
var dlButton = document.getElementById("downloadImageBtn");
bindButtonEvent(dlButton, "click", saveAsLocalImage);
};
function draw(){
var canvas = document.getElementById("thecanvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle = "rgba(125, 46, 138, 0.5)";
ctx.fillRect(25,25,100,100);
ctx.fillStyle = "rgba( 0, 146, 38, 0.5)";
ctx.fillRect(58, 74, 125, 100);
ctx.fillStyle = "rgba( 0, 0, 0, 1)"; // black color
ctx.fillText("Gloomyfish - Demo", 50, 50);
}
function bindButtonEvent(element, type, handler)
{
if(element.addEventListener) {
element.addEventListener(type, handler, false);
} else {
element.attachEvent('on'+type, handler);
}
}
function saveImageInfo ()
{
var mycanvas = document.getElementById("thecanvas");
var image = mycanvas.toDataURL("image/png");
var w=window.open('about:blank','image from canvas');
w.document.write("<img src='"+image+"' alt='from canvas'/>");
}
function saveAsLocalImage () {
var myCanvas = document.getElementById("thecanvas");
// here is the most important part because if you dont replace you will get a DOM 18 exception.
// var image = myCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream;Content-Disposition: attachment;filename=foobar.png");
var image = myCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
window.location.href=image; // it will save locally
}
</script>
</head>
<body bgcolor="#E6E6FA">
<div>
<canvas width=200 height=200 id="thecanvas"></canvas>
<button id="saveImageBtn">Save Image</button>
<button id="downloadImageBtn">Download Image</button>
</div>
</body>
</html>

运行效果如下
将HTML5 Canvas的内容保存为图片借助toDataURL实现
HTML / CSS 相关文章推荐
灵活运用CSS3特性绘制简易版围棋效果
Sep 28 HTML / CSS
CSS3 RGBA色彩模式使用实例讲解
Apr 26 HTML / CSS
HTML5新增的标签和属性归纳总结
May 02 HTML / CSS
canvas学习笔记之绘制简单路径
Jan 28 HTML / CSS
html5记忆翻牌游戏实现思路及代码
Jul 25 HTML / CSS
解析HTML5中的新功能本地存储localStorage
Mar 01 HTML / CSS
浅谈h5自定义audio(问题及解决)
Aug 19 HTML / CSS
HTML5 视频播放(video),JavaScript控制视频的实例代码
Oct 08 HTML / CSS
canvas绘制圆角头像的实现方法
Jan 17 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
Dec 14 HTML / CSS
详解盒子端CSS动画性能提升
May 24 HTML / CSS
css filter和getUserMedia的联合使用
Feb 24 HTML / CSS
仿酷狗html5手机音乐播放器主要部分代码
May 15 #HTML / CSS
基于HTML5 Canvas:字符串,路径,背景,图片的详解
May 09 #HTML / CSS
使用HTML5做个画图板的方法介绍
May 03 #HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
May 03 #HTML / CSS
HTML5 离线应用之打造零请求、无流量网站的解决方法
Apr 25 #HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
Apr 25 #HTML / CSS
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
Apr 25 #HTML / CSS
You might like
PHP 实现explort() 功能的详解
2013/06/20 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php基本函数汇总
2015/07/09 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
删除节点的jquery代码
2014/01/13 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
jquery使用经验小结
2015/05/20 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
在Python中移动目录结构的方法
2016/01/31 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
python eventlet绿化和patch原理
2020/11/21 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
新学期开学寄语
2014/01/18 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
教师自我反思材料
2014/02/14 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
导游词之潮音寺
2019/09/26 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
Python中的socket网络模块介绍
2022/07/23 Python