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

下面将详细讲解“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中的回调”的完整攻略。 1. 了解回调函数的概念 回调函数,就是将一个函数作为参数传递给另外一个函数,以便当这个函数完成时,将结果返回给原来传递的函数。 我们可以通过以下方式来定义一个回调函数: function callback(param) { console.log(param); } 2. 核心应用场…

    JavaScript 2023年6月11日
    00
  • js插件方式打开pdf文件(浏览器pdf插件分享)

    下面是关于“js插件方式打开pdf文件(浏览器pdf插件分享)”的完整攻略: 1. 准备工作 在实现该功能前,需要将需要打开的pdf文件上传到服务器,并记住该文件的访问地址。 2. 确认浏览器是否支持pdf插件 首先,需要确认当前浏览器是否提供了自带的pdf插件或者是否安装了第三方的pdf插件。 可以让用户打开一个测试页面,例如: <!DOCTYPE …

    JavaScript 2023年5月27日
    00
  • 用js进行url编码后用php反解以及用php实现js的escape功能函数总结

    以下是使用 JavaScript 进行 URL 编码并在 PHP 中进行反解码的攻略: JS 中的 URL 编码 在 JavaScript 中,可以使用 encodeURIComponent() 函数来对 URL 进行编码。 举例来说,如果想将以下字符串进行编码: var str = "hello world"; 可以使用以下代码进行编码…

    JavaScript 2023年5月19日
    00
  • JSON与JS对象的区别与对比

    JSON和JavaScript对象都是在Web应用程序中处理数据的重要方式。虽然它们看上去很相似,但它们有着不同的特性和适用场景。下面是关于JSON与JS对象的区别与对比的详细说明。 什么是JS对象? JS对象是一种数据类型。它是所有JS基本类型之一,可以通过定义一个变量并使用构造函数Object()来创建对象。例如: var person = new Ob…

    JavaScript 2023年5月27日
    00
  • javascript 方法覆写实例代码

    当我们需要对Javascript中的原生方法进行更改或扩展时,就需要用到方法覆写。在Javascript中,方法覆写可以通过对象的原型链来实现。以下是详细的攻略: 方法覆写的基本原理 Javascript中的每个函数都有一个prototype属性,这个属性指向原型对象。对于一个对象来说,如果这个对象的某个属性或方法不存在,Javascript会沿着原型链向上…

    JavaScript 2023年6月10日
    00
  • javascript的replace方法结合正则使用实例总结

    JavaScript的replace方法是对字符串的操作方法,可以替换掉指定的字符串或正则表达式匹配到的部分。通常情况下,replace方法结合正则表达式的使用可以非常灵活和方便地操作字符串。下面我们来看一下replace方法结合正则表达式使用的实例总结。 正则表达式语法 在学习replace方法结合正则表达式的使用之前,我们需要了解一些常用的正则表达式语法…

    JavaScript 2023年5月28日
    00
  • javascript判断变量是否有值的方法

    当我们使用JavaScript编程时,有时候需要判断一个变量是否具有值。在这种情况下,我们需要使用不同的方法来检查它是否具有值。下面就是“JavaScript判断变量是否有值的方法”的完整攻略。 方法一:typeof操作符 typeof操作符可以用来检测一个变量的类型。当变量值为undefined时,typeof会返回”undefined”。这意味着我们可以…

    JavaScript 2023年6月10日
    00
  • HTTP报文及ajax基础知识

    HTTP报文及AJAX基础知识 HTTP报文 HTTP报文的格式如下: <HTTP请求报文> <请求头> <请求体> <HTTP响应报文> <响应头> <响应体> 其中,请求头和响应头以键值对形式出现,每个键值对占一行,键和值之间使用一个冒号加一个空格隔开;请求体和响应体可以为空,也可以…

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