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

简介: 本文介绍了如何在Twaver-HTML5中将network导出为图片并提供下载,主要通过将network转换为canvas对象,然后转换为base64编码的图片进行展示和下载。

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

目录
相关文章
|
13天前
利用html2canvas插件自定义生成名片信息并保存图片
这是一个利用html2canvas插件自定义生成名片信息并保存图片,自定义上传头像,自定义输入个人信息内容,自定义图片名称,并将生成的图片保存到本地
29 1
利用html2canvas插件自定义生成名片信息并保存图片
|
28天前
|
人工智能
|
2月前
|
数据可视化 前端开发
Twaver-HTML5基础学习(39)鹰眼可视化视图组件(OverView)
本文介绍了如何在Twaver-HTML5中使用鹰眼(Overview)可视化视图组件,它作为Network的缩略图,允许用户通过缩略图导航Network,支持单击、双击和框选操作来控制Network视图。
39 5
Twaver-HTML5基础学习(39)鹰眼可视化视图组件(OverView)
|
2月前
|
数据可视化 前端开发 容器
Twaver-HTML5基础学习(41)列表可视化视图组件(List)
本文介绍了如何在Twaver-HTML5中使用列表可视化视图组件(List),展示了如何创建列表、设置列表属性(如行高、间隔颜色等)、实现数据绑定和排序,以及如何通过React代码示例进行操作。
31 2
Twaver-HTML5基础学习(41)列表可视化视图组件(List)
|
2月前
Twaver-HTML5基础学习(38)劈分面板SplitPane
本文介绍了如何在Twaver-HTML5中使用SplitPane组件来创建可分割的面板,通过动态调整分割条来改变面板的大小,支持水平和垂直分割。
34 2
Twaver-HTML5基础学习(38)劈分面板SplitPane
|
1月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
404 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
1月前
HTML图片
【10月更文挑战第4天】HTML图片。
27 2
|
2月前
|
移动开发 数据可视化 HTML5
Twaver-HTML5基础学习(40)表格可视化视图组件(Table)
本文介绍了如何在Twaver-HTML5中使用表格可视化视图组件(Table),包括创建表格、定义列对象、实现数据绑定和排序,以及处理表格事件和获取表格数据的方法。
38 1
|
1月前
html基础知识学习
html基础知识学习
31 0
|
2月前
|
移动开发 前端开发 JavaScript
使用html-to-image代替html2canvas,结合jspdf实现下载pdf(下载截图下载前端dom元素)
本文介绍了在前端项目中,当使用`html2canvas`遇到问题时,如何使用`html-to-image`库作为替代方案,结合`jspdf`实现将DOM元素生成为PDF文件并提供下载。文章首先讨论了`html2canvas`可能遇到的问题,并提供了该库的使用示例代码。随后,详细介绍了`html-to-image`库的安装和使用方法,展示了如何将DOM元素转换为Canvas,再利用`jspdf`生成PDF文件。最后,文章通过示例代码说明了整个转换和下载的过程,并展示了效果截图。
87 0