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、transition和animation属性的区别
Sep 25 HTML / CSS
两种CSS3伪类选择器详细介绍
Dec 24 HTML / CSS
CSS3中Transition动画属性用法详解
Jul 04 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
Jul 06 HTML / CSS
html5定位并在百度地图上显示的示例
Apr 27 HTML / CSS
深入探究HTML5的History API
Jul 09 HTML / CSS
HTML利用九宫格原理进行网页布局
Mar 13 HTML / CSS
用canvas显示验证码的实现
Apr 10 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
Dec 02 HTML / CSS
详解CSS玩转图片Base64编码
May 25 HTML / CSS
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
Jul 01 HTML / CSS
Canvas绘制像素风图片的示例代码
Sep 25 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
PHP4.04简明安装
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
vue filters的使用详解
2018/06/11 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
python中字典(Dictionary)用法实例详解
2015/05/30 Python
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
python实现ip代理池功能示例
2019/07/05 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
Python self用法详解
2020/11/28 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
大学毕业感言
2014/01/10 职场文书
青春寄语大全
2014/04/09 职场文书
小学运动会班级口号
2014/06/09 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
PHP新手指南
2021/04/01 PHP
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记