前后端配合问题总结:
1.使用upload上传组件时,需要在接口调用成功之后的函数中进行图片展示,action调用接口,formatter配合拿取后端接口返回的图片数据
2.upload内部只可包含一个标签元素否则会失效
3.保存画布元素之后,可能会出现img的url丢失的情况,请提前做好存值准备
4.使用input进行图片文件上传,需要将文件进行base64格式转换之后才可以在页面上成功展示(使用upload组件可忽略此条)

以下实例仅提供本地图片上传展示功能

一.用antv X6准备画布容器

(1). 官网antv x6

$ npm install @antv/x6 --save //下载使用x6

注明:详细使用请参考官方文档,此篇文章只对需要使用部分进行简单说明
(2).以react框架进行构造
实现思路

  • 先准备一个container容器
  • 准备数据(X6 支持 JSON 格式数据,该对象中需要有节点 nodes 和边 edges 字段,分别用数组表示)
  • 渲染画布
//画布准备const graph = new Graph({container: document.getElementById('container'),width: 900,height: 900,background: {color: '#fffbe6', // 设置画布背景颜色},})

二.在画布上进行节点渲染

//节点渲染,完整代码import { Graph, Shape, Addon } from '@antv/x6';
import React from 'react';
import '@antv/x6-react-shape'export default class PicturesWall extends React.Component {constructor(props) {super(props)this.state = {};this.graph=null}componentDidMount(){this.initGraph();}initContainer(container){this.container = container || {}}initGraph() {//创建画布const graph = new Graph({container: document.getElementById('container'),width: 900,height: 900,background: {color: '#fffbe6', // 设置画布背景颜色},})Graph.registerNode('image',{width: 240,height: 40,inherit: 'react-shape',preserveAspectRatio: true,component: <img />,attrs: {body: {fill: 'none',stroke: 'none',},},},true, );  this.graph = graph}addSquare=()=>{this.graph.addNode({shape: 'rect',x: 40,y: 40,width: 50,height: 50,attrs:{body: {fill: 'transparent',stroke: '#aaaa',},}//attrs是用来对节点定义样式的})}addLine=()=>{this.graph.addEdge({source: { x: 100, y: 40 },target: { x: 400, y: 40 },attrs: {line: {stroke: "#7c68fc", // 指定 path 元素的填充色},},})}handleChange = (event) => {let imgfile = event.currentTarget.files[0];///获得input的第一个图片let _this = this//使用readAsDataURL来进行回显图片let reader = new FileReader();reader.readAsDataURL(imgfile);reader.onload = function (event) {//会触发一个load事件let imgs = this.resultconsole.log('回显的Base64图片文件',imgs)_this.graph.addNode({shape: 'image',x: 40,y: 40,width: 50,height: 50,component:  <img src={imgs} style={{ width: '40px', height: '40px' }} />})};}render() {const { previewVisible, previewImage, fileList } = this.state;return (<div className="clearfix">{/* <div id="container-wrap"ref={this.initContainer}/> */}<div style={{display:'flex'}}><div style={{width: '50px', height:'20px',background:'#aaa', cursor:'pointer'}}onClick={this.addSquare}>正方形</div><div style={{width: '35px', height:'20px',background:'#aaa', cursor:'pointer',marginLeft:'5px'}}onClick={this.addLine}>线段</div><div style={{width: '70px', height:'20px',background:'#aaa', cursor:'pointer',marginLeft:'5px'}}><label class="control-label file" style={{position:'relative' ,width:'70px'}}><input  type='file' accept='image/png' onChange={this.handleChange} style={{ position: 'absolute',fontSize: '18px',right: 0,top: 0,opacity: 0,width:'100%'}}/>点击上传</label></div></div><div id='container'></div></div>);}
}

结果展示

AntV X6制作画板工具(图形,线段,图片上传)相关推荐

  1. vue点击图片后复制图片url_简单漂亮的(图床工具)开源图片上传工具——PicGo...

    介绍 PicGo: 一个用于快速上传图片并获取图片URL链接的工具,由vue-cli-electron-builder构建的简单漂亮的图片上传工具!基于electron-vue开发,支持macOS,W ...

  2. php 上传文件工具类,PHP 图片上传工具类(支持多文件上传)

    //ImageUploadTool.class.php class ImageUploadTool{ private $file; //文件信息 private $fileList; //文件列表 p ...

  3. JAVA工具类(13)---图片上传工具类

    package com.gcloud.common;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import ...

  4. Java 常用工具类(9) : 图片上传至阿里云OSS

    阿里云OSS工具类 加强版 : https://blog.csdn.net/Lxinccode/article/details/79698259 import java.io.ByteArrayInp ...

  5. 【工具】vue 图片上传(单张/多张)

    本文单传组件取自若依微服务为版ruoyi-ui:http://doc.ruoyi.vip/ruoyi-cloud/ 环境: vue@2.6.12 element-ui@2.15.3 1.图片上传(单张 ...

  6. 阿里OSS对象存储,实现图片上传代码;

    一.注册阿里云账号,购买OSS服务 获取 : 连接区域地址endpoint :需要存储的bucketName:图片保存路径picLocation :连接keyId:accessKeyId :连接秘钥a ...

  7. 前后端分离之图片上传服务端处理方法

    最近公司做的项目基本上都是用的前后端分离的架构进行的.在图片上传这块处理是先将图片上传到开发者服务器上,然后返回该图片在服务器上的图片地址存到数据库中.存到数据库的时候存的并不是网络地址,而是图片的相 ...

  8. spring框架的图片上传

    使用MultipartFile实现图片上传 MultipartFile为org.springframework.web.mutipart包下的一个类是spring框架为我们提供的, 我们就使用它来完成 ...

  9. JS画板图片上传到服务器Python

    上次实验了图片上传方式把客户端图片保存到服务器的方法 这次经过实验实现了画板图片直接上传到服务器并保存的方法 只要验证了几个概念 js端:base64传送,json传送,XMLHttpRequest, ...

最新文章

  1. 语言转4字节数据整型_R语言与RGui平台_数据类型_向量_4
  2. Struts2入门这一篇就够了
  3. 第七周项目一-成员函数(4)
  4. wukong引擎源码分析之搜索——docid有序的数组里二分归并求交集,如果用跳表的话,在插入索引时会更快...
  5. OpenStack看到中国“钱”景
  6. Shell 文件包含
  7. java aar 文件,将本地.aar文件添加到我的gradle构建中
  8. C#中DataTable使用以及对行与列的赋值
  9. MySQL子查询操作实例详解
  10. Java 8系列之重新认识HashMap(转载自美团点评技术团队)
  11. java controller json_Controller 获取 JSON
  12. 计算机共享文件怎样添加,怎么添加另一台电脑的共享文件夹
  13. Ubuntu下配置JDK
  14. Linux MPLS 初探
  15. JavaScript高级程序设计(第3版)中文在线阅读
  16. python打包的exe反编译_反编译python打包的exe到源代码
  17. 人工智能之语音识别概述(一)
  18. 二进制像素绘制程序 scratch编程三级
  19. PHP读取HTML生成doc
  20. 软考:嵌入式系统设计师——易错知识点总结

热门文章

  1. 计算机集成制造系统erp,企业资源计划(ERP)和计算机集成制造系统(CIMS)
  2. h5页面js监听页面失去焦点、获取焦点
  3. DRV8833PWPR|全桥/半桥驱动器|原包原盒|TI德州仪器
  4. chrome书签多列展开
  5. Android targetSdkVersion你真的了解吗?
  6. 购物网站系统设计与实现
  7. 阿拉伯数字转换中文表示
  8. 王小波文集 工作与人生
  9. radmin自动启动服务器,Radmin自动登录器及服务端一键部署
  10. uniapp运行小程序提示当前系统代理不是安全代理,是否信任?