element-ui 上传图片后标注坐标点

yizhihongxing

下面将详细讲解“element-ui上传图片后标注坐标点”的完整攻略。

准备工作

  1. 安装 element-ui 组件库和 vue-cropperjs 图片裁剪插件。
npm install element-ui vue-cropperjs --save
  1. 引入 element-ui 中的 UploadDialog 组件。
<template>
  <div>
    <el-upload 
      class="upload-demo"
      :action="actionUrl"
      :on-success="handleSuccess"
      :before-upload="beforeUpload"
    >
      <el-button slot="trigger">选取图片</el-button>
    </el-upload>

    <el-dialog 
      v-model="dialogVisible" 
      title="标注图片"
      width="60%"
    >
      <div class="wrapper">
        <el-image 
          ref="imageEditor" 
          :src="currentImgUrl"
          fit="contain"
          style="max-height: 80vh;"
        ></el-image>

        <button @click="handleComplete">完成标注</button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import { Upload, Dialog, Image } from 'element-ui'
import VueCropperjs from 'vue-cropperjs'
import 'cropperjs/dist/cropper.css'

export default {
  components: {
    'el-upload': Upload,
    'el-dialog': Dialog,
    'el-image': Image,
    VueCropperjs
  },
  data() {
    return {
      actionUrl: 'https://www.yourserver.com/upload', // 上传图片的接口地址
      currentImgUrl: '', // 当前上传的图片链接
      dialogVisible: false, // 标注图片的弹窗是否可见
      markerList: [], // 存储标注点信息的列表
      cropper: null // Cropper 实例对象
    }
  },
  methods: {
    // 图片上传前的处理方法
    beforeUpload() {
      // 这里可以进行一些上传前的校验,如图片大小、格式等。
      return true
    },
    // 上传成功后的处理方法
    handleSuccess(response) {
      this.currentImgUrl = response.data.url
      this.dialogVisible = true
    },
    // 弹窗中点击完成标注按钮的处理方法
    handleComplete() {
      this.markerList = this.cropper.getData()

      // 这里可以将 markerList 数据存入后台,也可以直接在前端进行使用。
      console.log(this.markerList)

      this.dialogVisible = false
    }
  },
  mounted() {
    // 创建 Cropper 实例
    this.cropper = new Cropper(this.$refs.imageEditor.$el, {
      aspectRatio: 16 / 9,
      crop: e => {
        // 每次标注点改变时触发,可在这里实时获取标注点坐标。
        console.log(e.detail.x, e.detail.y)
      }
    })
  }
}
</script>

<style>
.wrapper {
  padding: 30px;
}
</style>

攻略步骤

  1. upload 组件中添加上传图片的接口地址。
  2. 在上传成功后的回调函数中显示标注图片的弹窗,并将上传的图片链接存入 currentImgUrl 变量中。
  3. 在弹窗中引入 vue-cropperjs 组件,并创建 Cropper 实例。aspectRatio: 16 / 9 表示裁剪框的宽高比为 16:9,可以根据实际需求进行修改。
  4. 点击 “完成标注” 按钮后,调用 cropper.getData() 方法获取当前所有标注点的坐标,并将坐标存入 markerList 列表中。
  5. 可选的,可以在 mounted 钩子函数中添加 cropper.crop 监听事件实时获取标注点坐标,配合 @click="handleComplete" 点击完成标注按钮使用。

示例说明

示例1:上传图片并标注坐标点

  1. 点击 “选取图片” 按钮上传图片。
  2. 标注图片中的图像区域,生成标注点。
  3. 点击 “完成标注” 按钮,将标注点的坐标保存到 markerList 变量中。

示例2:使用获取的标注点坐标绘制图形

  1. 前端获取后台返回的标注点坐标。
  2. 使用 Canvas 绘制出相应的形状,如圆、矩形等。
  3. 将绘制后的图片显示在页面中。

具体实现可以参考 Canvas 绘图的相关文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:element-ui 上传图片后标注坐标点 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript中的高级函数

    JavaScript中的高级函数是指可以作为参数传递给其他函数或者作为返回值的函数。它们可以帮助我们更优雅地处理数据,并且能够让我们的代码更加简洁易懂。在本文中,我们将深入探讨这些高级函数,并且会通过示例进行讲解。 什么是高级函数 在JavaScript中,函数是一等公民。这意味着函数可以像其他类型的值一样被传递、赋值或者作为函数的返回值。高级函数是一类特殊…

    JavaScript 2023年6月10日
    00
  • JS 做一个简单的 Parser

    前言 前些天偶然看到以前写的一份代码,注意有一段尘封的代码,被我遗忘了。这段代码是一个简单的解析器,当时是为了解析日志而做的。最初解析日志时,我只是简单的正则加上分割,写着写着,我想,能不能用一个简单的方案做个解析器,这样可以解析多种日志。于是就有了这段代码,后来日志解析完了,没有解析其它日志就给忘了。再次看到这段代码,用非常简单易读的代码就实现了一个解析器…

    JavaScript 2023年4月18日
    00
  • 纯js网页画板(Graphics)类简介及实现代码

    那么我们来详细讲解一下“纯js网页画板(Graphics)类简介及实现代码”的攻略。 简介 Graphics 类是一个封装了浏览器 Canvas 的工具类,它提供了一些方法,使用户能够在 Canvas 上进行绘图。 实现代码 初始化 首先,我们要定义一个 Graphics 类,可以使用 ES6 的类语法来实现: class Graphics { constr…

    JavaScript 2023年6月10日
    00
  • google地图的路线实现代码

    下面是详细的讲解“Google Maps的路线实现代码”的攻略: 一、前置条件 在开始实现Google Maps路线的代码之前,你需要以下几个前置条件: 注册Google Maps API密钥; 在HTML页面中引入Google Maps API JavaScript库; 在HTML页面中创建一个地图div元素,用于渲染地图; 二、基本路线绘制 要绘制一个基…

    JavaScript 2023年6月11日
    00
  • JavaScrip String对象的方法

    下面是“JavaScript String对象的方法”的详细攻略。 String对象的介绍 在JavaScript中,字符串是一种基本的数据类型,由一个或多个字符组成,用来表示文字和文本数据。String对象是对JavaScript中字符串进行操作、处理和转换的对象。String对象拥有很多实用的方法,可以让我们对字符串进行各种操作和处理。 常用的Strin…

    JavaScript 2023年5月28日
    00
  • Apache加速模块mod_pagespeed安装使用详细介绍

    下面是“Apache加速模块mod_pagespeed安装使用详细介绍”的完整攻略: 1. 简介 mod_pagespeed是一个Apache的开源速度优化模块,可自动优化网页以提高加载速度并提升用户体验。本文将介绍如何在Apache服务器上安装和配置mod_pagespeed,并给出两个示例说明其用法。 2. 安装 安装mod_pagespeed的步骤如下…

    JavaScript 2023年6月11日
    00
  • js实现炫酷的烟花效果

    下面是js实现炫酷的烟花效果的完整攻略。 1. 前置条件 在实现炫酷的烟花效果之前,需要对以下技术有一定的掌握: HTML5 Canvas: 用于绘制图形,实现动态效果的关键。 JavaScript: 用于编写控制动画效果的脚本。 CSS3: 用于设置页面布局、动画过渡效果等。 2. 基本思路 实现炫酷的烟花效果,需要基于以下两个基本思路: 生成随机颜色的烟…

    JavaScript 2023年6月10日
    00
  • 超级给力的JavaScript的React框架入门教程

    关于“超级给力的JavaScript的React框架入门教程”的完整攻略,我会分别从如下几个方面进行详细讲解: React框架介绍 React开发环境的搭建和基础语法 React组件的概念和使用方法 React项目的构建和部署 案例实战1:TodoList应用的开发 案例实战2:电影搜索应用的开发 1. React框架介绍 React是一个由Facebook…

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部