angularjscanvasvis.jsvis.js-network

Export visjs network to jpeg/png image


I am working on angular vis.js. Vis.js works on canvas for creating nodes and links between the nodes.

Is there any way to get the image (jpeg/png) from the visj.s canvas?


Solution

  • Take a look on this snippet, i think it will help you

    under the vis canvas you will see a PNG image. you can right click this image and save it. (or you can save it in any other standard way)

    Good Luck.

    // create an array with nodes
      var nodes = new vis.DataSet([
        {id: 1, label: 'Node 1'},
        {id: 2, label: 'Node 2'},
        {id: 3, label: 'Node 3'},
        {id: 4, label: 'Node 4'},
        {id: 5, label: 'Node 5'}
      ]);
    
      // create an array with edges
      var edges = new vis.DataSet([
        {from: 1, to: 3},
        {from: 1, to: 2},
        {from: 2, to: 4},
        {from: 2, to: 5}
      ]);
    
      // create a network
      var container = document.getElementById('mynetwork');
      var data = {
        nodes: nodes,
        edges: edges
      };
      var options = {};
      var network = new vis.Network(container, data, options);
    
      network.on("afterDrawing", function (ctx) {
        var dataURL = ctx.canvas.toDataURL();
        document.getElementById('canvasImg').src = dataURL;
      });
    #mynetwork {
          width: 600px;
          height: 400px;
          border: 1px solid lightgray;
        }
    
        p {
          max-width: 600px;
        }
    <!doctype html>
    <html>
    <head>
      <title>Network | Basic usage</title>
      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.20.0/vis.min.js"></script>
      <link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.20.0/vis.min.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
    
    <div id="mynetwork"></div>
    <pre id="eventSpan"></pre>
    <img id="canvasImg" alt="Right click to save me!">
    
    
    
    </body>
    </html>