Twaver-HTML5基础学习(37)network导出图片并下载

network导出图片

在这里插入图片描述
代码:

/*
 * @Descripttion: 
 * @version: 
 * @Author: ZhangJunQing
 * @Date: 2022-04-18 14:44:05
 * @LastEditors: ZhangJunQing
 * @LastEditTime: 2022-05-05 16:29:34
 */
import React, { useEffect, useState } from 'react'

const twaver = require('twaver');
// const demo = require('demo');
const Demo = () => {
    const [network, setnetwork] = useState({})
    const [src, setsrc] = useState("")
    const init = () => {
        var box = new twaver.ElementBox();
        var network = new twaver.vector.Network(box);
        setnetwork(network)
        network.invalidateElementUIs();
        network.adjustBounds({ x: 0, y: 0, width: 500, height: 500 });
        document.getElementById("testID").appendChild(network.getView());
        var autoLayouter = new twaver.layout.AutoLayouter(box);
        network.setScrollBarVisible(false)

        var from1 = new twaver.Node();
        from1.setName('from1');
        box.add(from1);
        var to = new twaver.Node();
        to.setName('To');
        box.add(to);
        var from2 = new twaver.Node();
        from2.setName('from2');
        box.add(from2);
        var from3 = new twaver.Node();
        from3.setName('from3');
        box.add(from3);
        var from4 = new twaver.Node();
        from4.setName('from4');
        box.add(from4);
        var link = new twaver.Link(from1, to);
        var link2 = new twaver.Link(from2, to);
        var link3 = new twaver.Link(from3, to);
        var link4 = new twaver.Link(from4, to);
        link.setName('Link');
        link2.setName('link2');
        link3.setName('link3');
        link4.setName('link4');
        box.add(link);
        box.add(link2);
        box.add(link3);
        box.add(link4);
        autoLayouter.doLayout('symmetry', function () {
            network.zoomOverview(false);
        });

    }
    useEffect(init, [])

    const exportFun = () => {
        var canvas;
        if (network.getCanvasSize) {
            //canvas = network.toCanvas(network.getCanvasSize().width/5, network.getCanvasSize().height/5);
            canvas = network.toCanvas(400, 400);
        } else {
            canvas = network.toCanvas(network.getView().scrollWidth, network.getView().scrollHeight);
        }
        if (twaver.Util.isIE) {

        } else {
            var Imgsrc = canvas.toDataURL("image/png");
            var link = document.createElement('a')
            setsrc(Imgsrc)
            link.href = Imgsrc
            console.log(Imgsrc)
            link.download = "imgName"
            document.body.appendChild(link)
            link.click()
            document.body.removeChild(link)
        }

    }
    return (
        <>
            <p style={{ fontSize: "20px", paddingLeft: "50px", poaddingTop: "50px" }}>tips: </p>
            <ul style={{ fontSize: "20px", paddingLeft: "50px" }}>
                <li>导出img</li>
                <button onClick={exportFun}>点击,导出network pic</button>
                <img style={{ width: "200px", height: "200px" }} src={src}></img>
            </ul>
            {/* 画布元素需要开启定位 不然生成的图元坐标点会偏移 */}
            <div id="testID" style={{ width: "800px", height: "800px", border: "1px solid #ccc", position: "relative", margin: "0 auto" }}></div>
        </>
    )
}
export default Demo

主要就是利用twaver自带的方法转成canvas对象。

    if (network.getCanvasSize) {
          //canvas = network.toCanvas(network.getCanvasSize().width/5, network.getCanvasSize().height/5);
          canvas = network.toCanvas(400, 400);
      } else {
          canvas = network.toCanvas(network.getView().scrollWidth, network.getView().scrollHeight);
      }

然后将canvas变成base64,在页面显示并导出:

 const exportFun = () => {
        var canvas;
        if (network.getCanvasSize) {
            //canvas = network.toCanvas(network.getCanvasSize().width/5, network.getCanvasSize().height/5);
            canvas = network.toCanvas(400, 400);
        } else {
            canvas = network.toCanvas(network.getView().scrollWidth, network.getView().scrollHeight);
        }
        if (twaver.Util.isIE) {

        } else {
            var Imgsrc = canvas.toDataURL("image/png");
            var link = document.createElement('a')
            setsrc(Imgsrc)
            link.href = Imgsrc
            console.log(Imgsrc)
            link.download = "imgName"
            document.body.appendChild(link)
            link.click()
            document.body.removeChild(link)
        }

学习参考:TWaver Documents

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值