在 cytoscape web google groups 页面上提出了类似的问题。
这是问题和答案的链接
以下是所说的:
如果使用 png(),则只能将图像的字节作为字符串(如 Base64)。它不会将图像导出到服务器端,也不会使其可供下载。为此,您必须自己将字符串提交到服务器端,再次将 base64 转换为字节,然后让服务器组件(例如 PHP、Java Servlet)将字节流回浏览器,以便用户下载图片。
还可以选择使用 Flash 组件/插件来获取字节并使其无需 Web 服务器即可下载。当您选择“保存文件”菜单选项时,这正是 Cytoscape Web 演示应用程序 (http://cytoscapeweb.cytoscape.org/demo) 所做的。您可以从演示的 JavaScript 文件中复制示例并使用我们为此开发的 Flash 库。它没有很好的记录,所以我想它可能有点复杂。无论如何,如果您想尝试一下,请看一下:
- http://cytoscapeweb.cytoscape.org/js/content/demo.js - search for "org.cytoscapeweb.demo.Exporter"
- http://chianti.ucsd.edu/svn/cytoscapeweb/trunk/file/ - you can download the component project from Subversion with the command: svn checkout http://chianti.ucsd.edu/svn/cytoscapeweb/trunk/file cwfile-read-only
如果您搜索互联网,您可能会找到类似的插件。
请记住,在调用 vis.draw() 之前,必须从 ready() 函数内部调用 png() 函数 - 例如:
vis.ready(function() {
var png = vis.png();
// handle the png bytes here:
alert(png);
});
vis.draw(draw_options);
一个更简单的选择是使用 exportNetwork() 函数,它需要一个服务器端部分。见http://cytoscapeweb.cytoscape.org/documentation/cytoscape_web#section/exportNetwork;它甚至包括一个 PHP 示例。JavaScript 部分将是这样的:
vis.ready(function() {
// ...
vis.exportNetwork('png', 'export.php?type=png');
// ...
});
输出文件的名称由服务器端代码完成——本例中的“export.php”文件。
我希望这会有所帮助