我在cytoscape.js教程中看到有一些将图形表示为图像(png、jpg)的方法,但是否有一种将其表示为常规图形的方式,并且如果用户想要,可以通过点击按钮或类似选项将其保存为图像呢?
没有找到简单的方法来实现。
我正在使用python flask作为我的服务器端和cytoscape js用于绘制图表。
我在cytoscape.js教程中看到有一些将图形表示为图像(png、jpg)的方法,但是否有一种将其表示为常规图形的方式,并且如果用户想要,可以通过点击按钮或类似选项将其保存为图像呢?
没有找到简单的方法来实现。
我正在使用python flask作为我的服务器端和cytoscape js用于绘制图表。
现在您不需要使用服务器端代码就可以在浏览器中保存文件了。
您可以使用JS中的saveAs()
API来保存文件。这是一个polyfill:https://github.com/eligrey/FileSaver.js/
如果您需要图形数据,只需
var jsonBlob = new Blob([ JSON.stringify( cy.json() ) ], { type: 'application/javascript;charset=utf-8' });
saveAs( jsonBlob, 'graph.json' );
或者对于图片
var b64key = 'base64,';
var b64 = cy.png().substring( content.indexOf(b64key) + b64key.length );
var imgBlob = base64ToBlob( b64, 'image/png' );
saveAs( imgBlob, 'graph.png' );
(参考其他问题,有关base64toBlob()
的内容)
您可以直接使用saveAs()
,只需执行以下操作:
import { saveAs } from "file-saver"; //or require
...
saveAs(cy.png(), "graph.png");
const pngBlob = await cy.png({
output: 'blob-promise',
});
const fileName = 'myfile.png';
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(pngBlob);
downloadLink.download = fileName;
downloadLink.click();
png()
函数参数的 output
属性可用于直接生成一个 Blob
对象。如果您使用值 blob-promise
,则该函数将返回一个 Promise 而不是直接返回 Blob,因此您可以保持 UI 的非阻塞状态。