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

vue 實(shí)現(xiàn)網(wǎng)頁截圖功能詳解

 更新時間:2021年11月18日 17:31:20   作者:不愿禿頭的陽某  
這篇文章主要介紹了通過vue實(shí)現(xiàn)網(wǎng)頁截圖的功能,有興趣的童鞋可以了解一下

最近項(xiàng)目有一個需求,需要上傳圖片,但是客戶上傳的圖片大小不一,所以我們需要規(guī)定客戶的圖片比例,但又需要是客戶所需的,所以就想到了截圖

實(shí)現(xiàn)效果

我們的架構(gòu)是vue,所以用的是一個vue的截圖插件

安裝插件:npm install vue-cropper --save-dev

引入組件

 import Vue from 'vue';
 import { VueCropper } from "vue-cropper";

 Vue.use(VueCropper)

核心代碼

 <div>
            <span class="spanStyle">產(chǎn)品圖片:</span>
            <!--整個圖片預(yù)覽的div-->
            <div style="display:flex;padding-left: 300px;">
              <div class="info-item" style="flex:1;margin-left:-160px;margin-top: -25px">
                <label class="btn btn-orange theme-bg-gray theme-white w90" for="uploads" style="display:inline-block;width: 70px;padding: 0;text-align: center;line-height: 28px;" >選擇圖片</label>
                <input type="file" id="uploads" :value="imgFile" style="position:absolute; clip:rect(0 0 0 0);" accept="image/png, image/jpeg, image/gif, image/jpg" @change="uploadImg($event, 1)">
                <div class="line" style="margin-left: -280px;margin-top: 85px;">
                  <div class="cropper-content" style="margin-top:-60px;margin-left:160px;">
                    <div class="cropper">
                      <vueCropper
                        ref="cropper"
                        :img="option.img"
                        :outputSize="option.size"
                        :outputType="option.outputType"
                        :info="true"
                        :full="option.full"
                        :canMove="option.canMove"
                        :canMoveBox="option.canMoveBox"
                        :original="option.original"
                        :autoCrop="option.autoCrop"
                        :autoCropWidth="option.autoCropWidth"
                        :autoCropHeight="option.autoCropHeight"
                        :fixedBox="option.fixedBox"
                        @realTime="realTime"
                      ></vueCropper>
                    </div>
                    <!--截取完的圖片展示div-->
                    <div style="margin-left:700px;">
                      <div class="show-preview" :style="{'width': '300px', 'height':'150px',  'overflow': 'hidden', 'margin-left': '-650px'}">
                        <div :style="previews.div" >
                          <img :src="previews.url" :style="previews.img">
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>

 預(yù)覽的方法

data (){
	return{
		 headImg:'',
                //剪切圖片上傳
                crap: false,
                previews: {},
                option: {
                    img: '',
                    outputSize:1, //剪切后的圖片質(zhì)量(0.1-1)
                    full: false,//輸出原圖比例截圖 props名full
                    outputType: 'png',
                    canMove: true,
                    original: false,
                    canMoveBox: true,
                    autoCrop: true,
                    autoCropWidth: 300,
                    autoCropHeight: 150,
                    fixedBox: true
                },
                fileName:'',  //本機(jī)文件地址
                downImg: '#',
                imgFile:'',
                uploadImgRelaPath:'', //上傳后的圖片的地址(不帶服務(wù)器域名)
	}
},
methods:{
	// 實(shí)時預(yù)覽函數(shù)
   realTime(data) {
       console.log('realTime')
       this.previews = data
   },
   //選擇本地圖片
   uploadImg(e, num) {
       console.log('uploadImg');
       var _this = this;
       //上傳圖片
       var file = e.target.files[0]
       _this.fileName = file.name;
       if (!/\.(gif|jpg|jpeg|png|bmp|GIF|JPG|PNG)$/.test(e.target.value)) {
           alert('圖片類型必須是.gif,jpeg,jpg,png,bmp中的一種')
           return false
       }
       var reader = new FileReader();
       reader.onload =(e) => {
           let data;
           if (typeof e.target.result === 'object') {
               // 把Array Buffer轉(zhuǎn)化為blob 如果是base64不需要
               data = window.URL.createObjectURL(new Blob([e.target.result]))
           }
           else {
               data = e.target.result
           }
           if (num === 1) {
               _this.option.img = data
           } else if (num === 2) {
               _this.example2.img = data
           }
       }
       // // 轉(zhuǎn)化為blob
       reader.readAsArrayBuffer(file);
   }
}
 

然后我們要獲取截取完之后的圖片,是通過Cropper的回調(diào)函數(shù)來獲取它的圖片,這里我們獲取的是我們轉(zhuǎn)為blob格式的圖片(不轉(zhuǎn)顯示不了)
這邊是因?yàn)楹笈_就是用file類型接收的,所以我需要再把blob轉(zhuǎn)為file,然后才用formData上傳文件

productAdd(){
this.$refs.cropper.getCropBlob((data) => {
	  //這個data就是我們截取后的blob圖片
	  let formData = new FormData();
	  //獲取文件名,因?yàn)樵谵D(zhuǎn)成file里面不能用this.所以需要用一個變量來賦值
      var name=this.fileName
       var file = new File([data], name, {type: data.type, lastModified: Date.now()});
       formData.append("files",file)
       new Promise((resolve, reject) => {
           productAdd(formData).then(response => {
               if (response.code == 20000) {
                   Dialog.alert({
                       title: '提示',
                       message: '保存成功!'
                   }).then(() => {
                       this.back('/productInfo')
                   });

               }
           }).catch(error => {
               reject(error)
           })
       })
   })
}

實(shí)際運(yùn)用到自己的項(xiàng)目中還需改動,比如編輯圖片還需回顯,上傳多張剪切的圖片等等…

以上就是vue 實(shí)現(xiàn)網(wǎng)頁截圖功能詳解的詳細(xì)內(nèi)容,更多關(guān)于vue 網(wǎng)頁截圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue中的過濾器及其時間格式化問題

    vue中的過濾器及其時間格式化問題

    這篇文章主要介紹了vue中的過濾器及其時間格式化,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Vue不能下載xls以及文件亂碼問題解決

    Vue不能下載xls以及文件亂碼問題解決

    最近工作中遇到了一些問題,通過查找相關(guān)資料終于找到了相關(guān)的解決方法,這篇文章主要給大家介紹了關(guān)于Vue不能下載xls以及文件亂碼問題解決的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 淺談實(shí)現(xiàn)在線預(yù)覽PDF的幾種解決辦法

    淺談實(shí)現(xiàn)在線預(yù)覽PDF的幾種解決辦法

    這篇文章主要介紹了淺談實(shí)現(xiàn)在線預(yù)覽PDF的幾種解決辦法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue中使用mockjs配置和使用方式

    vue中使用mockjs配置和使用方式

    這篇文章主要介紹了vue中使用mockjs配置和使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 如何快速上手Vuex

    如何快速上手Vuex

    本文主要介紹了Javascript中Vuex的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • vue3中如何使用vue-types

    vue3中如何使用vue-types

    vue-types 在 Vue 3 中的使用主要適用于希望進(jìn)行更細(xì)致的 prop 驗(yàn)證的場景,尤其是在 JavaScript 項(xiàng)目中,這篇文章給大家介紹vue3中如何使用vue-types,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • vue3常用的API使用簡介

    vue3常用的API使用簡介

    這篇文章主要介紹了vue3常用的API使用簡介,幫助大家更好的理解和學(xué)習(xí)使用vue,感興趣的朋友可以了解下
    2021-03-03
  • vue tab切換,解決echartst圖表寬度只有100px的問題

    vue tab切換,解決echartst圖表寬度只有100px的問題

    這篇文章主要介紹了vue tab切換,解決echartst圖表寬度只有100px的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue中router-view無法顯示的解決辦法

    Vue中router-view無法顯示的解決辦法

    這篇文章主要給大家介紹了關(guān)于Vue中router-view無法顯示的解決辦法,router-view組件作為vue最核心的路由管理組件,在項(xiàng)目中作為路由管理經(jīng)常被使用到,需要的朋友可以參考下
    2023-07-07
  • Vue+ElementUI使用vue-pdf實(shí)現(xiàn)預(yù)覽功能

    Vue+ElementUI使用vue-pdf實(shí)現(xiàn)預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了Vue+ElementUI使用vue-pdf實(shí)現(xiàn)預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論

大荔县| 泊头市| 肃南| 通海县| 云霄县| 南陵县| 德庆县| 岗巴县| 巴青县| 灌阳县| 通渭县| 泽库县| 庄浪县| 通道| 多伦县| 济南市| 即墨市| 星座| 读书| 蒙山县| 杨浦区| 瑞安市| 黑山县| 拜泉县| 托克逊县| 凉山| 达日县| 钟祥市| 顺昌县| 贵南县| 定襄县| 新和县| 内江市| 通州区| 宜阳县| 无极县| 永寿县| 衢州市| 临颍县| 兴和县| 攀枝花市|