将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 相关文章推荐
多重CSS背景动画实现方法示例
Apr 04 HTML / CSS
CSS3 Columns分列式布局方法简介
May 03 HTML / CSS
css3中背景尺寸background-size详解
Sep 02 HTML / CSS
纯CSS3制作漂亮带动画效果的主机价格表
Apr 25 HTML / CSS
一篇文章带你学习CSS3图片边框
Nov 04 HTML / CSS
CSS3 实现的火焰动画
Dec 07 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
May 20 HTML / CSS
HTML5有哪些新特征
Dec 01 HTML / CSS
Html5大文件断点续传实现方法
Dec 05 HTML / CSS
Html5新增了哪些功能
Apr 16 HTML / CSS
css3中2D转换之有趣的transform形变效果
Feb 24 HTML / CSS
CSS 实现角标效果的完整代码
Jun 28 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
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
Python使用django搭建web开发环境
2017/06/09 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
What is view? why do we have view?
2012/06/22 面试题
优秀幼教自荐信
2014/02/03 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
设备售后服务承诺书
2014/05/30 职场文书
个人典型事迹材料
2014/12/30 职场文书
申请吧主发表的感言
2015/08/03 职场文书
党员理论学习心得体会
2016/01/21 职场文书
《穷人》教学反思
2016/02/19 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python