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动画效果抖动解决方法
Sep 03 HTML / CSS
50个强大璀璨的CSS3/JS技术运用实例
Feb 27 HTML / CSS
CSS3实现翘边的阴影效果的代码示例
Jun 13 HTML / CSS
html5视频播放_动力节点Java学院整理
Jul 13 HTML / CSS
微信浏览器取消缓存的方法
Mar 28 HTML / CSS
HTML5未来发展趋势
Feb 01 HTML / CSS
详解h5页面在不同ios设备上的问题总结
Mar 01 HTML / CSS
H5最强接口之canvas实现动态图形功能
May 31 HTML / CSS
video.js支持m3u8格式直播的实现示例
May 20 HTML / CSS
html5中嵌入视频自动播放的问题解决
May 25 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
Oct 23 HTML / CSS
html5表单的required属性使用
Jul 07 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
2019十大人气国漫
2020/03/13 国漫
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
把PHP安装为Apache DSO
2006/10/09 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
Sanic框架Cookies操作示例
2018/07/17 Python
python判断数字是否是超级素数幂
2018/09/27 Python
Python日期时间Time模块实例详解
2019/04/15 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
党校培训自我鉴定范文
2014/03/20 职场文书
党建工作先进材料
2014/05/02 职场文书
社团活动总结书
2014/06/27 职场文书
踏青活动策划方案
2014/08/19 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
教师培训学习心得体会
2016/01/21 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书