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如何绘制一个圆圆的loading转圈动画
Jan 09 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
Jan 17 HTML / CSS
Html5剪切板功能的实现代码
Jun 29 HTML / CSS
让IE支持HTML5的方法
Dec 11 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
Oct 26 HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
Jan 07 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
Jun 17 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
Dec 11 HTML / CSS
简述Html5 IphoneX 适配方法
Feb 08 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
Aug 19 HTML / CSS
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
Apr 22 HTML / CSS
css3手动实现pc端横向滚动
Jun 21 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
php之readdir函数用法实例
2014/11/13 PHP
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
python调用windows api锁定计算机示例
2014/04/17 Python
python实现的简单文本类游戏实例
2015/04/28 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
python实现kNN算法
2017/12/20 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
新年寄语大全
2014/04/12 职场文书
生产车间标语
2014/06/11 职场文书
毕业生找工作求职信
2014/08/05 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
迎新生标语大全
2014/10/06 职场文书
新郎婚礼致辞
2015/07/27 职场文书
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server