当前位置: 首页 > news >正文

D3导出png,保存到本地

为什么80%的码农都做不了架构师?>>>   hot3.png

//依赖  IE9及以下不支持

2016-04-20_153135

Blob.js

canvas-toBlob.js

FileSaver.js

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<script src="jquery-2.1.4.min.js"></script>
<script src="d3.js"></script>
<script src="Blob.js"></script>
<script src="canvas-toBlob.js"></script>
<script src="FileSaver.js"></script>
<style>
*{
    padding: 0;
    margin:0;
}
</style>
</head>
<body>

<a class="download" download>
下载
</a>
<script>

 

var height=400;
var width=400;

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

var data=[1,2,3,4,5,6,7,8];
svg.selectAll("rect")
    .data(data)
    .enter()
    .append("rect")
    .attr("width",20)
    .attr("fill","red")
    .attr("x",function(e,i){
        return 25*i;
    })
    .attr("height",function(e,i){
        return e*50;
    });

$(".download").click(function(){
down()
});


var down=function(){

//首先将svg专成xml文件形式


var doctype = '<?xml version="1.0" standalone="no"?>'
  + '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';

// serialize our SVG XML to a string.
var source = (new XMLSerializer()).serializeToString(d3.select('svg').node());

// create a file blob of our SVG.
var blob = new Blob([ doctype + source], { type: 'image/svg+xml;charset=utf-8' });
var url = window.URL.createObjectURL(blob);
var downloadImg=document.createElement("img");
    downloadImg.src=url;
    downloadImg.οnlοad=function(){//当onload之后再画,否则导出时为空白

//2.将svg转成canvas
var canvas=document.createElement("canvas");
        canvas.width=width;
        canvas.height=height;
    var ctx=canvas.getContext('2d');
        ctx.drawImage(downloadImg,0,0);

        canvas.toBlob(function(blob) {
                saveAs(
                      blob
                    , "1.png"//保存文件名称
                );
            }, "image/png");
    }

   

};
</script>
</body>
</html>

转载于:https://my.oschina.net/byAge/blog/663008

相关文章:

  • Yii2批量插入数据
  • Java垃圾回收机制
  • 我建了一个叫Hello World的项目
  • 上课笔记分享-1-第17课时-1-多域名-统一沟通-环境
  • 【烈日炎炎战后端の58万词の索引】
  • opensStack
  • linux性能监控——CPU、Memory、IO、Network
  • 手把手教你用Python爬虫煎蛋妹纸海量图片
  • 详细了解前后端交互B/S,细的不能在细了
  • 站立会议07
  • git的操作 使用
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法
  • 同源策略以及回调地狱和方法
  • redis 集群
  • 项目的简单描述加实例代码
  • ES6系统学习----从Apollo Client看解构赋值
  • git 常用命令
  • Java编程基础24——递归练习
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Making An Indicator With Pure CSS
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • vue-router 实现分析
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 测试开发系类之接口自动化测试
  • 分布式熔断降级平台aegis
  • 汉诺塔算法
  • 将回调地狱按在地上摩擦的Promise
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 力扣(LeetCode)22
  • 前端之React实战:创建跨平台的项目架构
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #android不同版本废弃api,新api。
  • (day 12)JavaScript学习笔记(数组3)
  • (zt)最盛行的警世狂言(爆笑)
  • (第27天)Oracle 数据泵转换分区表
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)http-server应用
  • ******之网络***——物理***
  • ***通过什么方式***网吧
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core 中的路径问题
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net refrector
  • .Net的C#语言取月份数值对应的MonthName值
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET中两种OCR方式对比
  • //解决validator验证插件多个name相同只验证第一的问题
  • ?