Vue圖片裁剪組件實(shí)例代碼
示例:
tip: 該組件基于vue-cropper二次封裝
安裝插件
npm install vue-cropper yarn add vue-cropper
寫(xiě)入封裝的組件
<!-- 簡(jiǎn)易圖片裁剪組件 --- 二次封裝 --> <!-- 更多api https://github.com/xyxiao001/vue-cropper --> <!-- 使用:傳入圖片 比例 顯示隱藏。方法:監(jiān)聽(tīng)底部按鈕點(diǎn)擊即可 ---更多props查詢(xún)文檔自行添加 --> <template> <div v-if="value" :value="value" @input="val => $emit('input', val)" class="conbox"> <div class="info"> <vueCropper ref="cropper" :img="img" :outputSize="outputSize" :outputType="outputType" :info="info" :canScale="canScale" :autoCrop="autoCrop" :fixed="fixed" :fixedNumber="fixedNumber" :full="full" :fixedBox="fixedBox" :canMove="canMove" :canMoveBox="canMoveBox" :original="original" :centerBox="centerBox" :infoTrue="infoTrue" :mode="mode" ></vueCropper> </div> <div class="btns"> <div @click="clickCancelCut" class="cancel">取消</div> <img @click="clickRotate" src="../../assets/paradise/rotate.png" alt="" /> <div @click="clickOk" class="okey">確定</div> </div> </div> </template> <script> import { VueCropper } from 'vue-cropper'; export default { name: 'PictureCropping', components: { VueCropper }, props: { value: { type: Boolean, default: false, }, //裁剪圖片的地址 img: { type: String, default: '', }, //截圖框的寬高比例 fixedNumber: { type: Array, default: () => { return [1, 1]; }, }, }, data() { return { // 裁剪組件的基礎(chǔ)配置option // img: this.img, // 裁剪圖片的地址 outputSize: 1, // 裁剪生成圖片的質(zhì)量 outputType: 'jpeg', // 裁剪生成圖片的格式 info: true, // 裁剪框的大小信息 canScale: true, // 圖片是否允許滾輪縮放 autoCrop: true, // 是否默認(rèn)生成截圖框 // autoCropWidth: 300, // 默認(rèn)生成截圖框?qū)挾? // autoCropHeight: 200, // 默認(rèn)生成截圖框高度 fixed: true, // 是否開(kāi)啟截圖框?qū)捀吖潭ū壤? // fixedNumber: this.fixedNumber, // 截圖框的寬高比例 full: true, // 是否輸出原圖比例的截圖 fixedBox: true, // 固定截圖框大小 不允許改變 canMove: true, //上傳圖片是否可以移動(dòng) canMoveBox: true, // 截圖框能否拖動(dòng) original: false, // 上傳圖片按照原始比例渲染 centerBox: true, // 截圖框是否被限制在圖片里面 // high:true,// 是否按照設(shè)備的dpr 輸出等比例圖片 infoTrue: true, // true 為展示真實(shí)輸出圖片寬高 false 展示看到的截圖框?qū)捀? // maxImgSize: 2000, //限制圖片最大寬度和高度 // enlarge: 1, //圖片根據(jù)截圖框輸出比例倍數(shù) mode: 'contain', //圖片默認(rèn)渲染方式 }; }, computed: {}, watch: {}, //生命周期 - 創(chuàng)建完成(訪(fǎng)問(wèn)當(dāng)前this實(shí)例) created() {}, //生命周期 - 掛載完成(訪(fǎng)問(wèn)DOM元素) mounted() {}, methods: { clickCancelCut() { this.$emit('clickCancelCut', '點(diǎn)擊取消'); this.$refs.cropper.stopCrop(); this.$refs.cropper.clearCrop(); }, clickRotate() { this.$refs.cropper.rotateRight(); this.$emit('clickRotate', '點(diǎn)擊旋轉(zhuǎn)'); }, clickOk() { //輸出裁剪的base64 this.$refs.cropper.getCropData(data => { this.$emit('clickOk', data); this.$refs.cropper.stopCrop(); this.$refs.cropper.clearCrop(); }); }, }, }; </script> <style lang='less' scoped> /* @import url(); 引入css類(lèi) */ .conbox { position: fixed; top: 0; right: 0; bottom: 0; left: 0; box-sizing: border-box; height: 100vh; width: 100%; background-color: #000; display: flex; flex-direction: column; justify-content: center; .info { width: auto; height: 800px; .vue-cropper { background-image: none; background-color: #000; } } .btns { padding: 0 20px; color: #fff; text-align: center; display: flex; justify-content: space-between; align-items: center; position: absolute; left: 0; right: 0; bottom: 15px; img { width: 85px; height: 85px; } .cancel { background-color: #606465; padding: 15px 20px; width: 100px; border-radius: 10px; } .okey { background-color: #df6457; padding: 15px 20px; width: 100px; border-radius: 10px; } } } </style>
總結(jié)
到此這篇關(guān)于Vue圖片裁剪組件的文章就介紹到這了,更多相關(guān)Vue圖片裁剪組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue項(xiàng)目實(shí)現(xiàn)添加圖片裁剪組件
- vue圖片裁剪插件vue-cropper使用方法詳解
- vue實(shí)現(xiàn)圖片裁剪后上傳
- vue 圖片裁剪上傳組件的實(shí)現(xiàn)
- 詳解vue項(xiàng)目中實(shí)現(xiàn)圖片裁剪功能
- vue-image-crop基于Vue的移動(dòng)端圖片裁剪組件示例
- Vue-cropper 圖片裁剪的基本原理及思路講解
- 基于cropper.js封裝vue實(shí)現(xiàn)在線(xiàn)圖片裁剪組件功能
- cropper js基于vue的圖片裁剪上傳功能的實(shí)現(xiàn)代碼
- vue項(xiàng)目ElementUI組件中el-upload組件與圖片裁剪功能組件結(jié)合使用詳解
相關(guān)文章
vue頁(yè)面回退或關(guān)閉,發(fā)送請(qǐng)求不中斷問(wèn)題
這篇文章主要介紹了vue頁(yè)面回退或關(guān)閉,發(fā)送請(qǐng)求不中斷問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01淺談vue+webpack項(xiàng)目調(diào)試方法步驟
本篇文章主要介紹了淺談vue+webpack項(xiàng)目調(diào)試方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無(wú)效的解決
這篇文章主要介紹了vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無(wú)效的解決方案,具有很好的參考價(jià)值。希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Vue學(xué)習(xí)之路之登錄注冊(cè)實(shí)例代碼
本篇文章主要介紹了Vue學(xué)習(xí)之路之登錄注冊(cè)實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07vue+element搭建后臺(tái)小總結(jié) el-dropdown下拉功能
這篇文章主要為大家詳細(xì)介紹了vue+element搭建后臺(tái)小總結(jié),el-dropdown下拉功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09