Vue圖片裁剪組件實(shí)例代碼
更新時(shí)間:2021年07月02日 14:27:42 作者:zby909
這篇文章主要給大家介紹了關(guān)于Vue圖片裁剪組件的相關(guān)資料,本文介紹的組件是基于vue-cropper二次封裝,vue-cropper大家應(yīng)該都很熟悉了吧,需要的朋友可以參考下
示例:

tip: 該組件基于vue-cropper二次封裝
安裝插件
npm install vue-cropper yarn add vue-cropper
寫入封裝的組件
<!-- 簡易圖片裁剪組件 --- 二次封裝 -->
<!-- 更多api https://github.com/xyxiao001/vue-cropper -->
<!-- 使用:傳入圖片 比例 顯示隱藏。方法:監(jiān)聽底部按鈕點(diǎn)擊即可 ---更多props查詢文檔自行添加 -->
<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, // 是否開啟截圖框?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)建完成(訪問當(dāng)前this實(shí)例)
created() {},
//生命周期 - 掛載完成(訪問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類 */
.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)容請搜索腳本之家以前的文章或繼續(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)在線圖片裁剪組件功能
- cropper js基于vue的圖片裁剪上傳功能的實(shí)現(xiàn)代碼
- vue項(xiàng)目ElementUI組件中el-upload組件與圖片裁剪功能組件結(jié)合使用詳解
相關(guān)文章
vue頁面回退或關(guān)閉,發(fā)送請求不中斷問題
這篇文章主要介紹了vue頁面回退或關(guān)閉,發(fā)送請求不中斷問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
淺談vue+webpack項(xiàng)目調(diào)試方法步驟
本篇文章主要介紹了淺談vue+webpack項(xiàng)目調(diào)試方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無效的解決
這篇文章主要介紹了vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無效的解決方案,具有很好的參考價(jià)值。希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Vue學(xué)習(xí)之路之登錄注冊實(shí)例代碼
本篇文章主要介紹了Vue學(xué)習(xí)之路之登錄注冊實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
vue+element搭建后臺(tái)小總結(jié) el-dropdown下拉功能
這篇文章主要為大家詳細(xì)介紹了vue+element搭建后臺(tái)小總結(jié),el-dropdown下拉功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09

