将HTML5 Canvas的内容保存为图片建议收藏

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

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

主要思想是借助Canvas自己的API – toDataURL()来实现,整个实现

HTML + JavaScript的代码很简单。

代码如下:

 1 <html>
 2 <meta http-equiv="X-UA-Compatible" content="chrome=1">
 3 <head>
 4 <script>
 5         window.onload = function() {
 6             draw();
 7             var saveButton = document.getElementById("saveImageBtn");
 8             bindButtonEvent(saveButton, "click", saveImageInfo);
 9             var dlButton = document.getElementById("downloadImageBtn");
10             bindButtonEvent(dlButton, "click", saveAsLocalImage);
11         };
12             function draw(){
13                 var canvas = document.getElementById("thecanvas");
14                 var ctx = canvas.getContext("2d");
15                 ctx.fillStyle = "rgba(125, 46, 138, 0.5)";
16                 ctx.fillRect(25,25,100,100); 
17                 ctx.fillStyle = "rgba( 0, 146, 38, 0.5)";
18                 ctx.fillRect(58, 74, 125, 100);
19                 ctx.fillStyle = "rgba( 0, 0, 0, 1)"; // black color
20                 ctx.fillText("Gloomyfish - Demo", 50, 50);
21             }
22             
23             function bindButtonEvent(element, type, handler)
24             {
25                    if(element.addEventListener) {
26                       element.addEventListener(type, handler, false);
27                    } else {
28                       element.attachEvent('on'+type, handler);
29                    }
30             }
31             
32             function saveImageInfo () 
33             {
34                 var mycanvas = document.getElementById("thecanvas");
35                 var image    = mycanvas.toDataURL("image/png");
36                 var w=window.open('about:blank','image from canvas');
37                 w.document.write("<img src='"+image+"' alt='from canvas'/>");
38             }
39 
40             function saveAsLocalImage () {
41                 var myCanvas = document.getElementById("thecanvas");
42                 // here is the most important part because if you dont replace you will get a DOM 18 exception.
43                 // var image = myCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream;Content-Disposition: attachment;filename=foobar.png");
44                 var image = myCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); 
45                 window.location.href=image; // it will save locally
46             }
47         </script>
48 </head>
49 <body bgcolor="#E6E6FA">
50     <div>
51         <canvas width=200 height=200 id="thecanvas"></canvas>
52         <button id="saveImageBtn">Save Image</button>
53         <button id="downloadImageBtn">Download Image</button>
54     </div><a href=http://www.cnblogs.com/roucheng/">柔城</a>
55 </body>
56 </html>

http://www.cnblogs.com/roucheng/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120724.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python3菜鸟教程笔记「建议收藏」

    python3菜鸟教程笔记「建议收藏」python2和python3的一些差异:*print函数变了,python3中的print函数必须要加括号*xrange函数合并到了range中,2到5的序列可以直接用range(2,5

    2022年7月5日
    24
  • 初识业务架构图_管理架构图

    初识业务架构图_管理架构图文章目录什么是业务架构图?业务架构图规范宏观微观设计步骤分层分模块分功能实例什么是业务架构图?是将用户需求进行宏观系统抽象进行描述和展示,是表达业务层级和关系的工具,目的是将简单的业务逻辑简单化,降低理解难度,这个图是给用户和各级领导看的。业务架构图规范宏观1.宏观:横向:并列结构,级别是相同的;纵向:要有分层的思想,整体上有层次感,上层是依赖于下层的,越底层的,越是基础服务,同时也更为重要;对称:要讲究对称美,尽可能地功能结构分配均匀;虚线框:多个模块,逻辑上可以归为一块时可以使用虚线

    2022年10月11日
    0
  • vue引入vant_vueaxios跨域请求

    vue引入vant_vueaxios跨域请求因为后端给的接口不是本地的接口,所以需要跨域来获取接口数据在vue.config.js中对其进行配置devServer:{host:’localhost’,port:3030,//端口https:false,proxy:{//配置跨域’/api’:{target:’http://xx.xx.xx.xxx’,//代理的接口域名以及端口号;ws:

    2022年9月27日
    0
  • SNMPTRAP_lnmp lamp

    SNMPTRAP_lnmp lampSNMP协议是用来管理设备的协议,目前SNMP已成为网络管理领域中事实上的工业标准,并被广泛支持和应用,大多数网络管理系统和平台都是基于SNMP的。如果NMS(网管系统)需要查询被管理设备的状态,则需要通过SNMP的get操作获得设备的状态信息。但由于告警信息一般是由受管服务器进行主动告警,这时候就不能通过管理方主动使用snmpget来进行,而是由受管服务器通过SNMPTRAP进行。…

    2022年8月20日
    3
  • 怎么新建pytest的ini文件_bikini

    怎么新建pytest的ini文件_bikini前言pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行查看pytest.ini的配置选项pytest-h找到以下

    2022年7月31日
    4
  • 单例模式singleton_单例模式例子

    单例模式singleton_单例模式例子单例模式 Singleton动机模式定义实例结构要点总结笔记动机在软件系统中,经常有一些特殊的类,必须保证它们在系统中只存在一个实例,才能保证他们的逻辑正确性、以及良好的效率如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?模式定义保证一个类仅有一个实例,并提供一个该实例的全局访问点。实例单例class Singleton{private : Singleton(); Singleton(const Singleton& other);public:

    2022年8月9日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号