将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发光搜索表单分享
Apr 11 HTML / CSS
CSS3中的opacity属性使用教程
Aug 19 HTML / CSS
纯css3实现思维导图样式示例
Nov 01 HTML / CSS
CSS3 分类菜单效果
May 27 HTML / CSS
CSS3 实现的加载动画
Dec 07 HTML / CSS
html5仿支付宝密码框的实现代码
Sep 06 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
Jan 09 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
Jun 23 HTML / CSS
Html5+JS实现手机摇一摇功能
Apr 24 HTML / CSS
移动HTML5前端框架—MUI的使用
Dec 18 HTML / CSS
canvas版人体时钟的实现示例
Jan 29 HTML / CSS
HTML+CSS实现导航条下拉菜单的示例代码
Aug 02 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
239军机修复记
2021/03/02 无线电
PHP实现linux命令tail -f
2016/02/22 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
解放web程序员的输入验证
2006/10/06 Javascript
JS学习之一个简易的日历控件
2010/03/24 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
python机器学习之神经网络实现
2018/10/13 Python
python实现kmp算法的实例代码
2019/04/03 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
Python urllib3软件包的使用说明
2020/11/18 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
化工专业推荐信范文
2013/11/28 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
单位活动策划方案
2014/08/17 职场文书
质量承诺书格式范文
2015/04/28 职场文书
golang中的空接口使用详解
2021/03/30 Python
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android