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 相关文章推荐
利用CSS的Sass预处理器(框架)来制作居中效果
Mar 10 HTML / CSS
CSS3旋转——彩色扇子兼容firefox浏览器
Jun 04 HTML / CSS
使用CSS3在触屏上为按钮实现激活效果
Sep 27 HTML / CSS
详解CSS3中border-image的使用
Jul 18 HTML / CSS
基于Jquery和Css3代码制作可以缩放的搜索框
Nov 19 HTML / CSS
CSS3 实现飘动的云朵动画
Dec 01 HTML / CSS
HTML5计时器小例子
Oct 15 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
Dec 29 HTML / CSS
利用canvas实现图片压缩的示例代码
Jul 17 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
Aug 28 HTML / CSS
使用html2canvas实现将html内容写入到canvas中生成图片
Jan 03 HTML / CSS
flex弹性布局详解
Mar 20 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获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
详解PHP数组赋值方法
2015/11/07 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
js中this用法实例详解
2015/05/05 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python写的一个简单监控系统
2015/06/19 Python
Django实现学员管理系统
2019/02/26 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
综合素质的自我鉴定
2013/10/07 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
法学专业自我鉴定
2014/02/05 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
开门红主持词
2014/04/02 职场文书
个性与发展自我评价
2015/03/06 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
python实现A*寻路算法
2021/06/13 Python
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏