downloadImg() { // 将当前canvas转换为png图片
var serializer = new XMLSerializer();
var source = serializer.serializeToString(this.svg.node());
source = '<?xml version="1.0" standalone="no"?>\r\n' + source;
var url = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(source);
var image = new Image;
if (this.canvas.msToBlob) {// 兼容IE9+浏览器
image.src = url;
var blob = this.canvas.msToBlob();
window.navigator.msSaveBlob(blob, "graph.jpg");
} else { // chrome、火狐等
image.onload = function() {
this.context.drawImage(image, 0, 0); // 图片要完全loaded后才能draw,否则火狐下的报错'Component is not available'
image.src = url;
var a = document.createElement("a");
document.body.appendChild(a);
a.download = "graph.jpg";
a.href = this.canvas.toDataURL("image/jpg");
var evt = new MouseEvent('click', {view: window, bubbles: true, cancelable: true});
a.dispatchEvent(evt);
document.body.removeChild(a);
啥也不说直接上代码咯~
downloadImg() { // 将当前canvas转换为png图片var serializer = new XMLSerializer();var source = serializer.serializeToString(this.svg.node());source = '<?xml version="1.0" standalone="no"?>\r\n' + so...
我的方法是在浏览器的console面板里输入下面的命令,就会直接触发下载转化好的PNG文件。
saveSvgAsPng(d3.select('svg').node(), 'myDrawing.png', {scale: 2,backgroundColor:"#ffffff",encoderOptions:1.0});
以下转自:https://blog.csdn.net/qq_36208461/...
分享一下,让各位可以避坑!
其实很简单,就是使用saveSvgAsPng.js
链接:http://p8sv0x8g6.bkt.clouddn.com/saveSvgAsPng.js
使用方法就是
var canvas = $(&quot;#s...
d3 canvasby lars verspohl 由拉斯·韦斯波尔
D3和Canvas分3个步骤 (D3 and Canvas in 3 steps)
绑定,平局和互动 (The bind, the draw and the interactivity)
Let’s say you’re building a data visualization using D3 and SVG. Y...
用于转换和下载SVG的导出方法。
如果使用NPM,则npm install d3plus-export 。 否则,请下载。 您也可以将d3plus-export加载为独立库或一部分。 支持ES模块,AMD,CommonJS和普通环境。 在香草中,将导出d3plus全局d3plus :
< script src =" https://cdn.jsdelivr.net/npm/d3plus-export@1 " > </ script >
< script >
console . log ( d3plus ) ;
</ script >
API参考
HTML / SVG元素渲染到共享画布。
将HTML默认样式添加到d3选择中以正确呈现它。
将HTML元素下载为位图PNG图像。
将SVG默认属性添加到d3选择中以正确呈现它。
d3plus。 dom2
https://www.smartdraw.com/genogram/
http://www.mamicode.com/info-detail-1163777.htmlD3折线图
https://www.cnblogs.com/hwaggLee/p/5073885.htmljs-d3画图插件
http://www.xiaomlove.com/2014/06/29/d3-j...
这个周零散解决了一些的关于d3问题,算是入了门,因而写了博客,顺便也作为周报的内容,所以篇幅会比正常我平时写的周报长很多,详细到代码层面。目前除了这次代码提到的v4,也完成了v6版本对应的代码。
1 从简单做起——html单页面文件开发
目前能找到的很多学习用的demo都是cdn方式引入,直接一个单页面html文件开发,而且出问题也能很方便定位查找,再者v6版本刚出不久,对于诸多api也是有了比较大的改动,讨论度不如有教程的v4,所以为了入门,同时为了避免要下各种各样的d3 npm包,还有考虑各种变量冲突、
fabric.js 是一个用于创建和操作 HTML5 Canvas 的 JavaScript 库。要在 canvas 中获取某个元素的子元素,可以这样做:
1. 首先获取 canvas 对象:
var canvas = new fabric.Canvas('canvas');
2. 然后使用 canvas 对象的 getObjects() 方法获取所有的元素:
var objects = canvas.getObjects();
3. 遍历所有的元素,找到指定的元素,并获取它的子元素:
for (var i = 0; i < objects.length; i++) {
if (objects[i].id == 'my-element') {
var children = objects[i].getObjects();
// children 就是 my-element 的子元素数组
注意:要获取元素的子元素,这个元素必须是一个 fabric.Group 类型的对象。如果不是,则无法获取子元素。