iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue拖动截图功能的简单实现方法
  • 335
分享到

Vue拖动截图功能的简单实现方法

2024-04-02 19:04:59 335人浏览 独家记忆
摘要

拖动鼠标进行页面截图(也可指定区域拖动截图) 一、安装html2canvas、Vue-cropper npm i html2canvas --save //用于

拖动鼠标进行页面截图(也可指定区域拖动截图)

一、安装html2canvasVue-cropper


npm i html2canvas --save          //用于将指定区域转为图片
npm i vue-cropper -S             //将图片进行裁剪

二、在main.js注册vue-cropper组件


import VueCropper from 'vue-cropper'
Vue.use(VueCropper)

三、页面中引入html2canvas


  import html2canvas from "html2canvas"
  export default{
  }

四、代码分解

1、将指定区域转为图片


this.$nextTick(()=>{
   html2canvas(document.body,{}).then(canvas => {    
     let dataURL = canvas.toDataURL("image/png");
     this.uploadImg = dataURL
     this.loading = true
   });
 })

这里是将body整个页面转为图片,得到base64格式数据,其他区域直接获取class或者id

2、将生成的图片进行拖动截图


<template>
	<div class="pop_alert" v-if="show">
	   <vueCropper
	      @mouseenter.native="enter"
	      @mouseleave.native="leave"
	      ref="cropper"
	      :img="uploadImg"
	      :outputSize="option.size"
	      :outputType="option.outputType"
	      :info="true"
	      :full="option.full"
	      :canMove="option.canMove"
	      :canMoveBox="option.canMoveBox"
	      :original="option.original"
	      :autoCrop="option.autoCrop"
	      :fixed="option.fixed"
	      :fixedNumber="option.fixedNumber"
	      :centerBox="option.centerBox"
	      :infoTrue="option.infoTrue"
	      :fixedBox="option.fixedBox"
	      style="background-image:none"
	    ></vueCropper>
	    <div class="btn_box">
	    	<div @click="save">确认截图</div>
	   	    <div @click="close">取消</div>
	    </div>
	 </div>
 </template>
<script>
 export default{
   data(){
       option: {
          info: true, // 裁剪框的大小信息
          outputSize: 0.8, // 裁剪生成图片的质量
          outputType: "jpeg", // 裁剪生成图片的格式
          canScale: false, // 图片是否允许滚轮缩放
          autoCrop: false, // 是否默认生成截图框
          fixedBox: false, // 固定截图框大小 不允许改变
          fixed: false, // 是否开启截图框宽高固定比例
          fixedNumber: [7, 5], // 截图框的宽高比例
          full: true, // 是否输出原图比例的截图
          canMove: false, //时候可以移动原图
          canMoveBox: true, // 截图框能否拖动
          original: false, // 上传图片按照原始比例渲染
          centerBox: false, // 截图框是否被限制在图片里面
          infoTrue: true // true 为展示真实输出图片宽高 false 展示看到的截图框宽高
        },
        uploadImg:"",
        show: false
   },
   methods:{
     enter() {
       if (this.uploadImg == "") {
         return;
       }
       this.$refs.cropper.startCrop(); //开始裁剪
     },
     leave() {
       this.$refs.cropper.stopCrop();//停止裁剪
     },
     save() {        //确认截图
        this.$refs.cropper.getCropData((data) => {      //获取截图的base64格式数据
          console.log(data)
          this.show = false
        })
        // this.$refs.cropper.getCropBlob(data => { //获取截图的Blob格式数据
        //   this.cutImg = data;
        // });
      },
      close(){        //取消
        this.show = false
      }
   }
 }
 </script>

五、全部代码


<template>
   <div>
     <div @click="tailoring">裁剪</div>
	<!--继续写页面的其他内容 pop_alert可封装成组件使用-->
	
     <div class="pop_alert" v-if="show">
	   <vueCropper
	      @mouseenter.native="enter"
	      @mouseleave.native="leave"
	      ref="cropper"
	      :img="uploadImg"
	      :outputSize="option.size"
	      :outputType="option.outputType"
	      :info="true"
	      :full="option.full"
	      :canMove="option.canMove"
	      :canMoveBox="option.canMoveBox"
	      :original="option.original"
	      :autoCrop="option.autoCrop"
	      :fixed="option.fixed"
	      :fixedNumber="option.fixedNumber"
	      :centerBox="option.centerBox"
	      :infoTrue="option.infoTrue"
	      :fixedBox="option.fixedBox"
	      style="background-image:none"
	    ></vueCropper>
	    <div class="btn_box">
	    	<div @click="save">确认截图</div>
	   	    <div @click="close">取消</div>
	    </div>
	 </div>
   </div>
</template>
<script>
import html2canvas from "html2canvas"
 export default{
  data(){
   return{
     option: {
          info: true, // 裁剪框的大小信息
          outputSize: 0.8, // 裁剪生成图片的质量
          outputType: "jpeg", // 裁剪生成图片的格式
          canScale: false, // 图片是否允许滚轮缩放
          autoCrop: false, // 是否默认生成截图框
          fixedBox: false, // 固定截图框大小 不允许改变
          fixed: false, // 是否开启截图框宽高固定比例
          fixedNumber: [7, 5], // 截图框的宽高比例
          full: true, // 是否输出原图比例的截图
          canMove: false, //时候可以移动原图
          canMoveBox: true, // 截图框能否拖动
          original: false, // 上传图片按照原始比例渲染
          centerBox: false, // 截图框是否被限制在图片里面
          infoTrue: true // true 为展示真实输出图片宽高 false 展示看到的截图框宽高
        },
        uploadImg:"",
        show: false
   }
  },
  methods:{
    tailoring(){            //裁剪
      this.$nextTick(()=>{
           html2canvas(document.body,{}).then(canvas => {
             let dataURL = canvas.toDataURL("image/png");
             this.uploadImg = dataURL
             this.show = true
           });
       })
    },
    enter() {
       if (this.uploadImg == "") {
         return;
       }
       this.$refs.cropper.startCrop(); //开始裁剪
     },
     leave() {
       this.$refs.cropper.stopCrop();//停止裁剪
     },
     save() {        //确认截图
        this.$refs.cropper.getCropData((data) => {      //获取截图的base64格式数据
          console.log(data)
          this.show = false
        })
        // this.$refs.cropper.getCropBlob(data => { //获取截图的Blob格式数据
        //   this.cutImg = data;
        // });
      },
      close(){        //取消
        this.show = false
      }
   }
 }
</script>
<style>
	.pop_alert{
      width: 100%;
	  height: 100%;
	  position: absolute;
	  top: 0;
	  left: 0;
	  border: 1px dashed red;
	  background-color: #000000;
    }
    .btn_box{
        position: absolute;
	    top: 0;
	    color: red;
	    right: 0;
	    font-size: 30px;
	    display: flex;
        align-items: center;
	    z-index: 6666;
    }
</style>

效果图

总结

到此这篇关于Vue拖动截图功能实现的文章就介绍到这了,更多相关Vue拖动截图功能内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue拖动截图功能的简单实现方法

本文链接: https://www.lsjlt.com/news/130092.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue拖动截图功能的简单实现方法
    拖动鼠标进行页面截图(也可指定区域拖动截图) 一、安装html2canvas、vue-cropper npm i html2canvas --save //用于...
    99+
    2022-11-12
  • Vue怎么实现拖动截图功能
    本篇内容介绍了“Vue怎么实现拖动截图功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、安装html2canvas、vue-croppe...
    99+
    2023-06-20
  • 如何使用Vue实现拖动截图功能
    这篇文章主要介绍了如何使用Vue实现拖动截图功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Vue实现拖动截图功能文章都会有所收获,下面我们一起来看看吧。一、安装html2canvas、vue-cro...
    99+
    2023-07-04
  • C#仿QQ实现简单的截图功能
    目录实现功能开发环境实现代码实现效果接上一篇写的截取电脑屏幕,我们在原来的基础上加一个选择区域的功能,实现自定义选择截图。 个人比较懒,上一篇的代码就不重新设计了,就简单改一下呈现方...
    99+
    2022-11-13
  • react实现简单的拖拽功能
    本文实例为大家分享了react实现简单的拖拽功能的具体代码,供大家参考,具体内容如下 src文件夹下新建文件夹demo  然后在创建两个文件js和css demo.js文...
    99+
    2022-11-13
  • vue实现简单图片上传功能
    本文实例为大家分享了vue实现简单图片上传的具体代码,供大家参考,具体内容如下 就是给自己留个参照,有什么不合理的地方请大家指出来,然后调整 1.效果展示 2.html相关的代码展...
    99+
    2022-11-13
  • Android简单实现菜单拖拽排序的功能
    目录1、效果2、简介3、功能拆解4、功能实现4.1、实现接口4.1.1、getMovementFlags4.1.2、onMove4.1.3、onSwiped4.2、绑定Recycle...
    99+
    2022-11-13
  • vue实现购物车全部功能的简单方法
    主要功能如下: 增加商品信息 修改商品信息 删除单个商品 删除多个商品 清空购物车 对商品单价进行降序排序 根据商品名称实现...
    99+
    2022-11-12
  • Python简单实现enum功能的方法
    本文实例讲述了Python简单实现enum功能的方法。分享给大家供大家参考,具体如下: class Enumerate(object): def __init__(self,names): ...
    99+
    2022-06-04
    简单 功能 方法
  • Vue实现简单基础的图片裁剪功能
    目录一、准备工作二、基本结构三、添加功能onMouseDownonMouseMoveonMouseUponMouseLeave四、总结近日,在写公司项目的时候接到一个需求:对已加载的...
    99+
    2022-11-13
  • vue实现简单的分页功能
    前端Vue实现分页功能,供大家参考,具体内容如下 我们都知道在spring boot项目中安装pagehelper可以实现分页功能,但是在vue中也能在前端实现分页。 1、首先,在d...
    99+
    2022-11-13
  • vue实现动态路由添加功能的简单方法(无废话版本)
    目录前言一 . 封装一个处理生产路由的函数二. vuex中进行调用三,最终完成动态添加路由总结 前言 最近练习vue的项目,有关于后台管理系统的动态添加路由部分,根据思路实...
    99+
    2023-02-16
    vue 动态添加路由 vue动态添加路由配置 vue动态配置路由
  • vue实现简单的购物车功能
    本文实例为大家分享了vue实现简单购物车功能的具体代码,供大家参考,具体内容如下 1.实现效果: 2.涉及到的知识点: toFixed函数、过滤器、reduce高阶函数、v-bin...
    99+
    2022-11-13
  • vue实现简单的计算器功能
    本文实例为大家分享了vue实现简单计算器的具体代码,供大家参考,具体内容如下 1.功能 1)  、实现加减乘除混合(包含小数点)2)、实现删除退格3)、实现内容重置 2.效...
    99+
    2022-11-13
  • WPF仿微信实现截图功能的方法详解
    目录前言 一、ScreenCut.cs 代码如下二、ScreenCut.xaml 代码如下 三、ScreenCutExample.xaml 代码如下每日一笑 肚子...
    99+
    2022-11-13
  • Vue实现简单的发表评论功能
    本文实例为大家分享了Vue实现简单的发表评论功能的具体代码,供大家参考,具体内容如下 1、这是我在学习中的实例,有些的不足的地方,还望各位大佬指点,感谢哦~ 2、发表评论的效果图 ...
    99+
    2022-11-12
  • vue如何实现简单的分页功能
    这篇文章将为大家详细讲解有关vue如何实现简单的分页功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下我们都知道在spring boot项目中安装pagehelper可以实现分页功能,但是在v...
    99+
    2023-06-29
  • 使用Redis实现秒杀功能的简单方法
    1. 怎样预防数据库超售现象 设置数据库事务的隔离级别为Serializable(不可用) Serializable就是让数据库去串行化的去执行事务,一个事务执行完才能去执行下一个事...
    99+
    2022-11-12
  • Android实现让图片在屏幕上任意移动的方法(拖拽功能)
    本文实例讲述了Android实现让图片在屏幕上任意移动的方法。分享给大家供大家参考,具体如下: public class DragExampleActivity extend...
    99+
    2022-06-06
    方法 图片 Android
  • Vue实现简单可扩展甘特图的方法详解
    目录特点基本使用方法预览更新日志Ganttastic是一个小型的Vue.js组件,用于在Web应用程序上呈现一个可配置的、可拖动的甘特图。 特点 时间网格悬停时突出显示行。显示/隐藏...
    99+
    2022-11-13
    Vue实现甘特图 Vue甘特图
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作