将HTML5 Canvas的内容保存为图片

简介: 主要思想是借助Canvas自己的API - toDataURL()来实现,整个实现 HTML + JavaScript的代码很简单。 window.onload = function() { draw(); var saveButton = document.

主要思想是借助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>

运行效果如下:



目录
相关文章
|
1月前
利用html2canvas插件自定义生成名片信息并保存图片
这是一个利用html2canvas插件自定义生成名片信息并保存图片,自定义上传头像,自定义输入个人信息内容,自定义图片名称,并将生成的图片保存到本地
37 1
利用html2canvas插件自定义生成名片信息并保存图片
|
1月前
|
前端开发 JavaScript
Canvas三维变化背景动画HTML源码
Canvas三维变化背景动画HTML源码
28 5
|
2月前
HTML图片
【10月更文挑战第4天】HTML图片。
28 2
|
3月前
|
前端开发
Twaver-HTML5基础学习(37)network导出图片并下载
本文介绍了如何在Twaver-HTML5中将network导出为图片并提供下载,主要通过将network转换为canvas对象,然后转换为base64编码的图片进行展示和下载。
40 5
|
3月前
|
XML 移动开发 前端开发
HTML5 SVG和canvas的性能探讨
HTML5 中的 SVG(可缩放矢量图形)和 Canvas(画布)分别用于网页图形绘制。SVG 基于矢量图形,使用 XML 描述,适合静态或少量动态内容(如图标、图表),易于编辑且保持高分辨率;Canvas 则基于位图,通过 JavaScript 绘制,更适合快速更新大量图形的场景(如游戏、动态动画),但在复杂图形计算时可能遇到性能瓶颈。总体而言,SVG 适用于静态和少量动态内容,而 Canvas 更适合高频率更新和性能要求高的场景。
|
3月前
|
移动开发 前端开发 JavaScript
HTML5 Canvas详解及应用
HTML5 Canvas 允许通过 JavaScript 在网页上动态绘制图形、动画等视觉内容。首先在 HTML 中定义 `&lt;canvas&gt;` 元素,并通过 JavaScript 获取画布上下文进行绘制。常见方法包括绘制矩形、路径、圆形和文本,以及处理图像和创建动画效果。适用于游戏开发、数据可视化、图像编辑和动态图形展示等多种应用场景。需要注意性能优化、无状态绘制及自行处理事件等问题。
|
3月前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`&lt;img&gt;`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`&lt;a&gt;`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
54 13
|
3月前
|
移动开发 前端开发 数据挖掘
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
|
4月前
在线将多张图片拼接起来图工具HTML源码
在线将多张图片拼接成一张图片,多图合一并导出下载。无需本地安装软件。 下载时,使用日期时间作为文件名,规避图片文件名相同造成的覆盖问题;也能省去一部覆盖确认操作 多语言支持
45 0
在线将多张图片拼接起来图工具HTML源码
|
4月前
|
Dart 前端开发 Java