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实现轮播图效果实例
May 04 HTML / CSS
基于CSS3特效之动画:animation的应用
May 09 HTML / CSS
详解CSS3中border-image的使用
Jul 18 HTML / CSS
详解HTML5中垂直上下居中的解决方案
Dec 20 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
Oct 26 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
Jul 22 HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
May 03 HTML / CSS
HTML5所有标签汇总及标签意义解释
Mar 12 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
Mar 21 HTML / CSS
HTML5图片层叠的实现示例
Jul 07 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
Aug 20 HTML / CSS
CSS中使用grid布局实现一套模板多种布局
Jul 15 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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
判断网页编码的方法python版
2016/08/12 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
python如何定义带参数的装饰器
2018/03/20 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
租房合同协议书
2014/04/09 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers