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的transform做的动态时钟效果
Sep 21 HTML / CSS
CSS书写规范、顺序和命名规则
Mar 06 HTML / CSS
多重CSS背景动画实现方法示例
Apr 04 HTML / CSS
css3的图形3d翻转效果应用示例
Apr 08 HTML / CSS
css3 伪元素和伪类选择器详解
Sep 04 HTML / CSS
HTML5 语音搜索只需一句代码
Jan 03 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
Jun 09 HTML / CSS
深入解析HTML5中的Blob对象的使用
Sep 08 HTML / CSS
HTML5无刷新改变当前url的代码
Mar 15 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
Aug 18 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
Jan 25 HTML / CSS
CSS 鼠标点击拖拽效果的实现代码
Dec 24 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新手NOTICE错误常见解决方法
2011/12/07 PHP
PHP 文件系统详解
2012/09/13 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
酒吧员工的岗位职责
2013/11/26 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
酒店节能减排方案
2014/05/26 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
法律服务所工作总结
2015/08/10 职场文书
协议书格式模板
2016/03/24 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
MySQL时区造成时差问题
2022/04/13 MySQL