最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue拖動截圖功能的簡單實現(xiàn)方法

 更新時間:2021年07月08日 15:51:33   作者:前端社區(qū)  
最近項目上要做一個車牌識別的功能,就需要做拖動截圖功能了,因為前段是vue,所以下面這篇文章主要給大家介紹了關(guān)于Vue拖動截圖功能的簡單實現(xiàn)方法,需要的朋友可以參考下

拖動鼠標(biāo)進行頁面截圖(也可指定區(qū)域拖動截圖)

一、安裝html2canvas、vue-cropper

npm i html2canvas --save          //用于將指定區(qū)域轉(zhuǎn)為圖片
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、將指定區(qū)域轉(zhuǎn)為圖片

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

這里是將body整個頁面轉(zhuǎn)為圖片,得到base64格式數(shù)據(jù),其他區(qū)域直接獲取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, // 裁剪生成圖片的質(zhì)量
          outputType: "jpeg", // 裁剪生成圖片的格式
          canScale: false, // 圖片是否允許滾輪縮放
          autoCrop: false, // 是否默認生成截圖框
          fixedBox: false, // 固定截圖框大小 不允許改變
          fixed: false, // 是否開啟截圖框?qū)捀吖潭ū壤?
          fixedNumber: [7, 5], // 截圖框的寬高比例
          full: true, // 是否輸出原圖比例的截圖
          canMove: false, //時候可以移動原圖
          canMoveBox: true, // 截圖框能否拖動
          original: false, // 上傳圖片按照原始比例渲染
          centerBox: false, // 截圖框是否被限制在圖片里面
          infoTrue: true // true 為展示真實輸出圖片寬高 false 展示看到的截圖框?qū)捀?
        },
        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格式數(shù)據(jù)
          console.log(data)
          this.show = false
        })
        // this.$refs.cropper.getCropBlob(data => { //獲取截圖的Blob格式數(shù)據(jù)
        //   this.cutImg = data;
        // });
      },
      close(){        //取消
        this.show = false
      }
   }
 }
 </script>

五、全部代碼

<template>
   <div>
     <div @click="tailoring">裁剪</div>
	<!--繼續(xù)寫頁面的其他內(nèi)容 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, // 裁剪生成圖片的質(zhì)量
          outputType: "jpeg", // 裁剪生成圖片的格式
          canScale: false, // 圖片是否允許滾輪縮放
          autoCrop: false, // 是否默認生成截圖框
          fixedBox: false, // 固定截圖框大小 不允許改變
          fixed: false, // 是否開啟截圖框?qū)捀吖潭ū壤?
          fixedNumber: [7, 5], // 截圖框的寬高比例
          full: true, // 是否輸出原圖比例的截圖
          canMove: false, //時候可以移動原圖
          canMoveBox: true, // 截圖框能否拖動
          original: false, // 上傳圖片按照原始比例渲染
          centerBox: false, // 截圖框是否被限制在圖片里面
          infoTrue: true // true 為展示真實輸出圖片寬高 false 展示看到的截圖框?qū)捀?
        },
        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格式數(shù)據(jù)
          console.log(data)
          this.show = false
        })
        // this.$refs.cropper.getCropBlob(data => { //獲取截圖的Blob格式數(shù)據(jù)
        //   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>

效果圖

總結(jié)

到此這篇關(guān)于Vue拖動截圖功能實現(xiàn)的文章就介紹到這了,更多相關(guān)Vue拖動截圖功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue+Element-UI中el-table動態(tài)合并單元格:span-method方法代碼詳解

    Vue+Element-UI中el-table動態(tài)合并單元格:span-method方法代碼詳解

    el-table是element-ui提供的表格組件,可以用于展示和操作數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Vue+Element-UI中el-table動態(tài)合并單元格:span-method方法的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • vue中的.capture和.self區(qū)分及初步理解

    vue中的.capture和.self區(qū)分及初步理解

    這篇文章主要介紹了vue中的.capture和.self區(qū)分及初步理解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue單頁應(yīng)用加百度統(tǒng)計代碼(親測有效)

    vue單頁應(yīng)用加百度統(tǒng)計代碼(親測有效)

    這篇文章主要介紹了vue單頁應(yīng)用加百度統(tǒng)計代碼的解決方法,需要的朋友參考下吧
    2018-01-01
  • vue+element模態(tài)框中新增模態(tài)框和刪除功能

    vue+element模態(tài)框中新增模態(tài)框和刪除功能

    這篇文章主要介紹了vue+element模態(tài)框中新增模態(tài)框和刪除功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Vue?實現(xiàn)分頁功能

    Vue?實現(xiàn)分頁功能

    Vue提供了豐富的API和組件,可以幫助開發(fā)者快速地構(gòu)建現(xiàn)代化的Web應(yīng)用程序,本文介紹了Vue如何實現(xiàn)分頁功能,包括數(shù)據(jù)的獲取、分頁器的實現(xiàn)和頁面的渲染
    2023-09-09
  • vue表單驗證自定義驗證規(guī)則詳解

    vue表單驗證自定義驗證規(guī)則詳解

    這篇文章主要為大家詳細介紹了vue表單驗證自定義驗證規(guī)則,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 使用vue實現(xiàn)各類彈出框組件

    使用vue實現(xiàn)各類彈出框組件

    這篇文章主要介紹了使用vue實現(xiàn)各類彈出框組件,文中給大家提到了vue中常用的dialog組件的封裝,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Vue3在Setup中使用axios請求獲取的值方式

    Vue3在Setup中使用axios請求獲取的值方式

    這篇文章主要介紹了Vue3在Setup中使用axios請求獲取的值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue-router 類似Vuex實現(xiàn)組件化開發(fā)的示例

    Vue-router 類似Vuex實現(xiàn)組件化開發(fā)的示例

    本篇文章主要介紹了Vue-router 類似Vuex實現(xiàn)組件化開發(fā)的示例,具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • 將vue+nodejs項目部署到服務(wù)器上的實現(xiàn)

    將vue+nodejs項目部署到服務(wù)器上的實現(xiàn)

    本文主要介紹了將vue+nodejs項目部署到服務(wù)器上的實現(xiàn),使用Express生成器部署和前端Vue項目部署,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03

最新評論

安龙县| 全椒县| 大连市| 遂川县| 苍梧县| 布拖县| 绵竹市| 大冶市| 上饶县| 海丰县| 司法| 溧水县| 靖安县| 收藏| 儋州市| 太湖县| 定日县| 安福县| 察隅县| 丰县| 绵竹市| 原平市| 石阡县| 乌拉特前旗| 格尔木市| 滨州市| 六安市| 自贡市| 巴楚县| 绥中县| 蓝山县| 青州市| 茂名市| 体育| 六安市| 永福县| 博客| 长海县| 肇源县| 屏南县| 奉新县|