c语言编程笔录

首页 >   > 笔记大全

笔记大全

GoJs中导出图片或SVG实现的方法是什么

更新时间:2023-11-10
前言: 在GoJs中,我们可以通过导出图片或SVG的方式来实现对画布的保存和共享。GoJs提供了一些方法和工具,允许我们将当前的图形画布导出为图片或者SVG格式的文件。这种功能非常有用,尤其是在需要将GoJs图形展示给其他人或存储到数据库中时。本文将阐述如何在GoJs中实现导出图片或SVG的方法。 一、导出图片: 要在GoJs中导出图片,我们可以使用`Diagram.makeImageData()`方法。

// 导出图片
function exportImage() {
  let imgData = myDiagram.makeImageData({ background:"white", returnType:"blob" });
  let fileName = "diagram.png";
  
  // 创建一个临时链接并下载图片
  let a = document.createElement('a');
  a.href = URL.createObjectURL(imgData);
  a.download = fileName;
  a.style.display = 'none';
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}

在上述代码中,我们首先使用`makeImageData()`方法将GoJs图形导出为图片数据。在`makeImageData()`方法中,我们可以传递一些参数来设置背景颜色以及返回数据的格式,这里我们将背景设置为白色,并将返回数据的格式设置为`blob`类型。然后,我们通过创建一个HTML链接元素,并将图片数据的URL赋给`href`属性,来生成一个临时链接。最后,我们设置链接的下载属性和样式,并将其添加到`body`元素中。这样,当我们调用`click()`方法时,链接将以`fileName`的名字下载图片文件。之后,我们将链接从文档中移除。

二、导出SVG: 要在GoJs中导出SVG,我们可以使用`Diagram.makeSvg()`方法。

// 导出SVG
function exportSvg() {
  let svgData = myDiagram.makeSvg({ scale: 1 });
  
  // 创建一个临时链接并下载SVG文件
  let fileName = "diagram.svg";
  let svgBlob = new Blob([svgData], { type: "image/svg+xml;charset=utf-8" });
  let url = URL.createObjectURL(svgBlob);
  
  let a = document.createElement('a');
  a.href = url;
  a.download = fileName;
  a.style.display = 'none';
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}

在上述代码中,我们首先使用`makeSvg()`方法将GoJs图形导出为SVG数据。在`makeSvg()`方法中,我们可以设置缩放(scale)参数,此处我们将其设置为1,表示原始大小。然后,我们通过创建一个`Blob`对象将SVG数据转换为SVG Blob。接下来,我们通过使用`URL.createObjectURL()`方法创建一个临时链接,该链接指向SVG Blob的URL。接着,我们创建一个HTML链接元素,并将链接和文件名设置为SVG Blob的URL和名字。最后,我们设置链接的下载属性和样式,将其添加到`body`元素中。当我们调用`click()`方法时,链接将以`fileName`的名字下载SVG文件,并将链接从文档中移除。

总结: 在GoJs中,我们可以使用`makeImageData()`方法将画布导出为图片数据,并通过创建临时链接下载图片;我们还可以使用`makeSvg()`方法将画布导出为SVG数据,并通过创建临时链接下载SVG文件。这两种导出方法非常方便,可以将GoJs图形保存为常见的图片或矢量图形格式,以供其他人使用或进行处理。通过上述介绍的导出图片和导出SVG的方法,我们可以轻松实现这些功能并将GoJs图形保存为文件。