国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

vue實現移動端圖片裁剪上傳功能

來源:懂視網 責編:小OO 時間:2020-11-27 22:32:54
文檔

vue實現移動端圖片裁剪上傳功能

本文實例為大家分享了vue移動端圖片裁剪上傳的具體代碼,供大家參考,具體內容如下:1.安裝cropperjs依賴庫。npm install cropperjs。2.編寫組件SimpleCropper.vue。
推薦度:
導讀本文實例為大家分享了vue移動端圖片裁剪上傳的具體代碼,供大家參考,具體內容如下:1.安裝cropperjs依賴庫。npm install cropperjs。2.編寫組件SimpleCropper.vue。

本文實例為大家分享了vue移動端圖片裁剪上傳的具體代碼,供大家參考,具體內容如下

1. 安裝cropperjs依賴庫

npm install cropperjs

2. 編寫組件SimpleCropper.vue

<template> 
 <div class="v-simple-cropper"> 
 <slot> 
 <button @click="upload">上傳圖片</button> 
 </slot> 
 <input class="file" ref="file" type="file" accept="image/*" @change="uploadChange"> 
 <div class="v-cropper-layer" ref="layer"> 
 <div class="layer-header"> 
 <button class="cancel" @click="cancelHandle">取消</button> 
 <button class="confirm" @click="confirmHandle">裁剪</button> 
 </div> 
 <img ref="cropperImg"> 
 </div> 
 </div> 
</template> 
 
<script> 
import Cropper from 'cropperjs' 
import 'cropperjs/dist/cropper.min.css' 
export default { 
 name: 'v-simple-cropper', 
 props: { 
 initParam: Object, 
 successCallback: { 
 type: Function, 
 default: () => {} 
 } 
 }, 
 data () { 
 return { 
 cropper: {}, 
 filename: '' 
 } 
 }, 
 mounted () { 
 this.init() 
 }, 
 methods: { 
 // 初始化裁剪插件 
 init () { 
 let cropperImg = this.$refs['cropperImg'] 
 this.cropper = new Cropper(cropperImg, { 
 aspectRatio: 1 / 1, 
 dragMode: 'move' 
 }) 
 }, 
 // 點擊上傳按鈕 
 upload () { 
 this.$refs['file'].click() 
 }, 
 // 選擇上傳文件 
 uploadChange (e) { 
 let file = e.target.files[0] 
 this.filename = file['name'] 
 let URL = window.URL || window.webkitURL 
 this.$refs['layer'].style.display = 'block' 
 this.cropper.replace(URL.createObjectURL(file)) 
 }, 
 // 取消上傳 
 cancelHandle () { 
 this.cropper.reset() 
 this.$refs['layer'].style.display = 'none' 
 this.$refs['file'].value = '' 
 }, 
 // 確定上傳 
 confirmHandle () { 
 let cropBox = this.cropper.getCropBoxData() 
 let scale = this.initParam['scale'] || 1 
 let cropCanvas = this.cropper.getCroppedCanvas({ 
 width: cropBox.width * scale, 
 height: cropBox.height * scale 
 }) 
 let imgData = cropCanvas.toDataURL('image/jpeg') 
 let formData = new window.FormData() 
 formData.append('fileType', this.initParam['fileType']) 
 formData.append('img', imgData) 
 formData.append('signId', this.$localStorage('signId')) 
 formData.append('originalFilename', this.filename) 
 window.$axios(this.initParam['uploadURL'], formData, { 
 method: 'post', 
 headers: {'Content-Type': 'multipart/form-data'} 
 }).then(res => { 
 this.successCallback(res.data) 
 this.cancelHandle() 
 }) 
 } 
 } 
} 
</script> 
 
<style lang="less"> 
.v-simple-cropper { 
 .file { 
 display: none; 
 } 
 .v-cropper-layer { 
 position: fixed; 
 top: 0; 
 bottom: 0; 
 left: 0; 
 right: 0; 
 background: #fff; 
 z-index: 99999; 
 display: none; 
 .layer-header { 
 position: absolute; 
 top: 0; 
 left: 0; 
 z-index: 99999; 
 background: #fff; 
 width: 100%; 
 height: .8rem; 
 padding: 0 .2rem; 
 box-sizing: border-box; 
 } 
 .cancel, 
 .confirm { 
 line-height: .8rem; 
 font-size: .28rem; 
 background: inherit; 
 border: 0; 
 outline: 0; 
 float: left; 
 } 
 .confirm { 
 float: right; 
 } 
 img { 
 position: inherit!important; 
 border-radius: inherit!important; 
 float: inherit!important; 
 } 
 } 
} 
</style> 

3. 引用組件

<template> 
 <simple-cropper :initParam="uploadParam" :successCallback="uploadHandle" ref="cropper"> 
 <img :src="userImg" @click="upload"> 
 </simple-cropper> 
</template> 
 
<script> 
import SimpleCropper from '@/components/SimpleCropper' 
export default { 
 name: 'info', 
 data () { 
 return { 
 uploadParam: { 
 fileType: 'recruit', // 其他上傳參數 
 uploadURL: this.$dataURL + 'uploadAction/qcloudImg', // 上傳地址 
 scale: 4 // 相對手機屏幕放大的倍數: 4倍 
 }, 
 userImg: this.$dataURL + 'test.png' 
 } 
 }, 
 methods: { 
 // 上傳頭像 
 upload () { 
 this.$refs['cropper'].upload() 
 }, 
 // 上傳頭像成功回調 
 uploadHandle (data) { 
 if (data.state === 'SUCCESS') { 
 this.userImg = this.form.headImgUrl = data.fileId 
 } 
 } 
 }, 
 components: { 
 SimpleCropper 
 } 
} 
</script> 

4. 示例圖

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue實現移動端圖片裁剪上傳功能

本文實例為大家分享了vue移動端圖片裁剪上傳的具體代碼,供大家參考,具體內容如下:1.安裝cropperjs依賴庫。npm install cropperjs。2.編寫組件SimpleCropper.vue。
推薦度:
標簽: 圖片 上傳 功能
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产精品免费视频能看 | 久久天堂网 | 免费观看a毛片一区二区不卡 | 精品欧美视频 | 国产成人一区二区三区影院免费 | 欧美日本中文字幕 | va欧美国产在线视频 | 欧美日韩成人 | 免费日本黄色网址 | 91久久精品国产性色也91久久 | 久久久91精品国产一区二区 | 欧美亚洲天堂 | 欧美日韩精品一区二区三区四区 | 日韩区在线 | 麻豆91精品91久久久 | 免费视频一区 | 久久国产精品久久久久久久久久 | 日本久久香蕉一本一道 | 欧美亚洲综合在线观看 | 亚洲精彩视频在线观看 | 精品国产日韩亚洲一区在线 | 日韩亚洲欧美日本精品va | 久久精品国产一区二区三区不卡 | 欧美日韩亚洲一区二区三区在线观看 | 亚洲精品在线免费 | 一级毛片子| 婷婷国产 | 欧美色视频在线 | 国产成人精品久久亚洲高清不卡 | 亚洲欧美一区二区三区孕妇 | 色婷婷国产| 麻豆亚洲一区 | 亚洲欧洲国产经精品香蕉网 | 国产在线一区二区三区四区 | 国产成人精品日本亚洲11 | 国产综合一区二区 | 黄色毛片免费看 | 精品国产一区二区三区成人 | 亚洲 欧美综合小说区图片区 | 91aaa在线观看 | 在线日韩亚洲 |