<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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
        主站蜘蛛池模板: 中文字幕亚洲电影| 亚洲精品视频免费在线观看| 亚洲综合在线另类色区奇米 | 亚洲AV无码乱码在线观看性色扶| 亚洲精品无码不卡在线播HE| 亚洲毛片无码专区亚洲乱| 男人j进入女人j内部免费网站| 最近中文字幕无吗免费高清 | 久久精品国产精品亚洲艾草网 | 久久青草国产免费观看| 亚洲AV本道一区二区三区四区| 爱爱帝国亚洲一区二区三区| 免费无码中文字幕A级毛片| 亚洲福利中文字幕在线网址| 一边摸一边桶一边脱免费视频 | 4hu四虎最新免费地址| 亚洲精品夜夜夜妓女网| 国产成人无码区免费内射一片色欲| 国产成人一区二区三区免费视频| 亚洲黄色免费网址| 99热在线日韩精品免费| 无码不卡亚洲成?人片| 自拍偷自拍亚洲精品播放| 亚洲AV网站在线观看| 中文永久免费观看网站| 亚洲AV无码乱码精品国产| 久久久精品国产亚洲成人满18免费网站| 国产免费av片在线无码免费看| 亚洲一区中文字幕| 成人福利免费视频| 亚洲第一se情网站| 亚洲色婷婷六月亚洲婷婷6月| 一区二区3区免费视频| 久久亚洲国产伦理| 一个人免费高清在线观看| 亚洲国产品综合人成综合网站| 5g影院5g天天爽永久免费影院| 亚洲v高清理论电影| 蜜桃视频在线观看免费网址入口| 亚洲av永久综合在线观看尤物| 四虎永久在线精品免费观看地址|