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制作翻转效果_动力节点Java学院整理
Jul 11 HTML / CSS
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
Dec 28 HTML / CSS
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
Jan 07 HTML / CSS
一款CSS3实现多功能下拉菜单(带分享按)的教程
Nov 05 HTML / CSS
解决margin 外边距合并问题
Jul 03 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
Apr 22 HTML / CSS
html5生成柱状图(条形图)效果的实例代码
Mar 25 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
Jun 02 HTML / CSS
localStorage、sessionStorage使用总结
Nov 17 HTML / CSS
AmazeUI 导航条的实现示例
Aug 14 HTML / CSS
Canvas波浪花环的示例代码
Aug 21 HTML / CSS
解决flex布局中子项目尺寸不受flex-shrink限制
May 11 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 header Content-Type类型小结
2011/07/03 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
php中spl_autoload详解
2014/10/17 PHP
php中in_array函数用法探究
2014/11/25 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
10个实用的脚本代码工具
2010/05/04 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
用Python设计一个经典小游戏
2017/05/15 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
终止劳动合同通知书
2015/04/16 职场文书
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python