SVG转canvas再转png图片

SVG转canvas再转png图片这个无聊的需求是因为客户要用邮件客户端看各种图表,只好搞了搞。
对插件canvg.js做出了小的改动,把canvg()函数第二个参数由文件路径修改为直接传递svg代码,同时避免了警告
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user‘s experience. For more help, check 
代码如下:
<html>
<head>
	<meta charset="UTF-8">
	<title>Svg to Png</title>
	<script src="mycanvg.js"></script>
	<script src="rgbcolor.js"></script>
	<script src="jquery.js"></script>
</head>
<body>
<div id="svgContainer">
	<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height=‘100px‘ width=‘600px‘>
	  <circle cx="100" cy="50" r="40" stroke="black"stroke-width="2" fill="red" />
	</svg>
</div>
<canvas id="myCanvas" height="100" width="600" >Your browser does not support the HTML5 canvas tag.</canvas>
<div style="background-color:blue;height:50px;margin:10 10 10 0">
</div>
<img src=‘‘ id=‘myImg‘ />

    <script type="text/javascript">
	// var c = document.getElementById(‘myCanvas‘);
	// var ctx = c.getContext(‘2d‘);
	// ctx.fillStyle = ‘#FF0000‘;
	// ctx.fillRect(0, 0, 80, 100);
	var str = $(‘#svgContainer‘)[0].innerHTML;
	console.log(str);
	canvasId = document.getElementById(‘myCanvas‘);
	canvg(canvasId,str);
	function convertCanvasToImage(canvas) {
		var image = new Image();
		image.src = canvas.toDataURL("image/png");
		return image;
	}
	document.getElementById(‘myImg‘).src = convertCanvasToImage(myCanvas).src;
    </script>

</body>
</html>

修改后的canvg.js代码太多了,贴不完,先不贴了
时间: 2024-10-10 08:22:52

SVG转canvas再转png图片的相关文章

三天学会HTML5——SVG和Canvas的使用

在第一天学习了HTML5的一些非常重要的基本知识,今天将进行更深层学习 首先来回顾第一天学习的内容,第一天学习了新标签,新控件,验证功能,应用缓存等内容. 第2天将学习如何使用Canvas 和使用SVG 实现功能 Lab1—— 使用Canvas Canvas 是指定了长度和宽度的矩形画布,我们将使用新的HTML5 JavaScript,可使用HTML5 JS API 来画出各种图形. 初始化 1. 创建HTML页面 <html> <head></head> <bo

SVG 与 Canvas:如何选择

SVG 与 Canvas:如何选择 61(共 69)对本文的评价是有帮助 - 评价此主题 本主题一开始将对 SVG 与 Canvas 进行简要比较,接下来会讨论大量的比较代码示例,如光线跟踪和绿屏. 注意  为了查看本主题中包含的很多示例,你必须使用支持 SVG 和 Canvas 元素的浏览器(如 Windows Internet Explorer 9). 简介 矢量图形 矢量图形方案的简要概述 专业设计器和使用工具 HTML5 图形技术 技术简介 何时使用 <canvas>.何时使用 SVG

Canvas图保存成图片或pdf

Canvas画好的图片虽然可以通过toDataURL()转成二进制流的字符串格式,图片稍大一点就无法发送了,当然如果需求简单的话,可以在页面上加一个image元素,将转成的流直接赋给image的src就可以显示图片了. 但是大部分的时候我们还希望弹出保存框,保存图片到我们自己想要的路径下,或者添加一些统计和分析的信息到pdf中一起保存成一个pdf文件,这就需要在后台处理了,两种方式:后台新建一个Web Browser加载当前的页面,然后将获得到的图片流的信息再发送到前台弹出保存的对话框,后台发送

使用canvas 的api 实现 图片的显示 及 压缩

在移动端压缩图片并且上传主要用到filereader.canvas 以及 formdata 这三个h5的api.逻辑并不难.整个过程就是: (1)用户使用input file上传图片的时候,用filereader读取用户上传的图片数据(base64格式) (2)把图片数据传入img对象,然后将img绘制到canvas上,再调用canvas.toDataURL对图片进行压缩 (3)获取到压缩后的base64格式图片数据,转成二进制塞入formdata,再通过XmlHttpRequest提交form

贝塞尔曲线与CSS3动画、SVG和canvas的应用

简介 贝塞尔曲线是可以做出很多复杂的效果来的,比如弹跳球的复杂动画效果,首先加速下降,停止,然后弹起时逐渐减速的效果. 使用贝塞尔曲线常用的两个网址如下: 缓动函数:http://www.xuanfengge.com/easeing/easeing/ cubic-bezier:http://cubic-bezier.com/ 如何用贝塞尔曲线画曲线 一个标准的3次贝塞尔曲线需要4个点:起始点.终止点(也称锚点)以及两个相互分离的中间点. 无论SVG, Canvas还是CSS3动画,都牵扯到这4个

canvas代替img渲染图片

移动端用canvas代替img渲染图片,可以提高性能 var oImg = new Image(); oImg.src = url; oImg.onload = function(){ var cvs = $('#cvsIndex')[0].getContext('2d'); cvs.width = this.width; cvs.width = this.height; cvs.drawImage(this,0,0); }

再谈javascript图片预加载技术

图片预加载技术的典型应用: 如lightbox方式展现照片,无疑需要提前获得大图的尺寸,这样才能居中定位,由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小然后展示出来,所以lightbox显示的图片的速度体验要比直接输出的差很多,而本文说提到的预加载技术主要针对获取图片尺寸. 一段典型的使用预加载获取图片大小的例子: var imgLoad = function (url, callback) {    var img = new Image();   

使用canvas将网页内容以图片形式保存到服务器端

经过几天的折磨,终于实现了将网页以图片形式保存到服务器端的效果.在这里要特别感谢园子里白灰尘(http://www.cnblogs.com/Wylfocus/)这位朋友热心.耐心的指导.在网上有许多这样的介绍资料,但对于初学者来说,在测试过程中,有时是缺JS库文件.有时是因输入代码时没注意大小写等原因,总会出现这样或那样的错.为了让和我一样的初学者们都顺利看到程序的效果,现在把我试好的程序上传.开发环境为VS2008.特别要注意的是,IE9以下的版本不支持canvas,即使导入explorerc

html5 中的SVG 和canvas

想到昨天看资料的时候,发现html5 中的SVG 和canvas 都可以表示图形,那它们到底有哪些区别呢?该如何正确的使用它们呢? 1.SVG:可缩放矢量图形,(Scalable Vector Graphics),SVG使用XML格式定义图像. canvas:<canvas> 标签定义图形,比如图表和其他图像;<canvas> 标签只是图形容器,您必须使用脚本来绘制图形. 2.<canvas> 标记和 SVG 的另外一个重要的不同点是:(VML我还没有了解过,后续会进行