html5中svg canvas和图片之间相互转化思路代码


Posted in HTML / CSS onJanuary 24, 2014

最近有个需求,需要把网页部分内容做正文,并把原网页转成pdf作为附件,发送邮件给boss。由于我们这是报表类型的网站,在html5中控件开发无非就是canvas或者是svg,这里我们有几个控件是用svg,而svg在FoxMail邮件正文中无法正常显示,于是考虑将svg转成canvas显示,但是后来发现canvas也无法正常显示,最后不得已,只能将canvas标签再一次转成图片格式,终于解决了这个问题。下面就简单介绍一下实现过程。如下是一个svg标签

复制代码
代码如下:

<div id="svgContainer">
<svg id="svg"></svg>
</div>

首先需要获取svg标签以及内容:

var svgHtml = svgContainer.innerHTML();

将svg转成canvas需要用到google的一个插件canvg,可以上官网下载,也可以直接远程引用进来

接下来就是调用该插件的canvg(canvasId,svgHtml)方法来转成canvas,这个方法第一个参数就是canvas标签的id,第二个自然就是svg标签内容了,就这样,svg转成了canvas

然后就是将canvas转成图片了,这个更加简单了

var imgSrc = document.getElementById(canvasId).toDataUrl("image/png");//这其实是将canvas转成了图片,并返回图片的所有内容数据,如下即可显示图片:

复制代码
代码如下:

<img src=imgSrc />

这就是从svg->canvas->image的实现方法了,这个还是很有用的,因为不同的浏览器对svg和canvas的支持不同,这样的话,至少我们的控件总有方式能够正确显示,即使我们最后只能使用图片。
HTML / CSS 相关文章推荐
使用CSS3创建动态菜单效果
Jul 10 HTML / CSS
css3 transform及原生js实现鼠标拖动3D立方体旋转
Jun 20 HTML / CSS
CSS3 实现雷达扫描图的示例代码
Sep 21 HTML / CSS
移动web模拟客户端实现多方框输入密码效果【附代码】
Mar 25 HTML / CSS
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
Dec 13 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
Jun 28 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
Jul 15 HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
May 03 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
Jun 27 HTML / CSS
HTML5实现音频和视频嵌入的方法
Aug 22 HTML / CSS
使用html5实现表格实现标题合并的实例代码
May 13 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
Jun 03 HTML / CSS
HTML5 canvas画图并保存成图片的jcanvas插件
Jan 17 #HTML / CSS
Html5无刷新修改browser Url的方法
Jan 15 #HTML / CSS
html特殊符号示例 html特殊字符编码对照表
Jan 14 #HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
Jan 07 #HTML / CSS
编写html5时调试发现脚本php等网页js、css等失效
Dec 31 #HTML / CSS
html5基础标签(html5视频标签 html5新标签用法)
Dec 30 #HTML / CSS
html5的canvas实现3d雪花飘舞效果
Dec 27 #HTML / CSS
You might like
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
Python的词法分析与语法分析
2013/05/18 Python
Python素数检测实例分析
2015/06/15 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
企业年会主持词
2014/03/27 职场文书
图书馆标语
2014/06/19 职场文书
社保委托书怎么写
2014/08/02 职场文书
红色旅游心得体会
2014/09/03 职场文书
公司证明怎么写
2014/09/22 职场文书
单位租房协议书范本
2014/12/04 职场文书
实用求职信模板范文
2019/05/13 职场文书
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server