vue+element實現(xiàn)圖片上傳及裁剪功能
本文實例為大家分享了vue+element實現(xiàn)圖片上傳及裁剪的具體代碼,供大家參考,具體內(nèi)容如下
隨便寫的一個小demo 功能是沒有任何問題 可能里面會有一些小細節(jié)沒有優(yōu)化
1 、安裝 vue-cropper
npm install vue-cropper
2、組件內(nèi)使用
import { VueCropper } from 'vue-cropper'
components: {
VueCropper,
},
具體可見官網(wǎng)
demo
<template>
<div>
<h1>圖片上傳</h1>
<div>
<el-upload
class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
<el-dialog title="圖片剪裁" :visible.sync="dialogVisible" append-to-body>
<div class="cropper-content">
<div class="cropper" style="text-align:center">
<vueCropper
ref="cropper"
:img="option.img"
:outputSize="option.outputSize"
:outputType="option.outputType"
:info="option.info"
:canScale="option.canScale"
:autoCrop="option.autoCrop"
:autoCropWidth="option.autoCropWidth"
:autoCropHeight="option.autoCropHeight"
:fixed="option.fixed"
:fixedBox="option.fixedBox"
:fixedNumber="option.fixedNumber"
></vueCropper>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="finish" :loading="loading">確認</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {VueCropper} from 'vue-cropper'
export default {
components: {
VueCropper
},
data(){
return{
imageUrl: '',
dialogVisible: false,
// 裁剪組件的基礎(chǔ)配置option
option: {
img: '', // 裁剪圖片的地址
info: true, // 裁剪框的大小信息
outputSize: 0.8, // 裁剪生成圖片的質(zhì)量
outputType: 'jpeg', // 裁剪生成圖片的格式
canScale: false, // 圖片是否允許滾輪縮放
autoCrop: true, // 是否默認生成截圖框
autoCropWidth: 100, // 默認生成截圖框?qū)挾?
autoCropHeight: 100, // 默認生成截圖框高度
fixedBox: true, // 固定截圖框大小 不允許改變
fixed: true, // 是否開啟截圖框?qū)捀吖潭ū壤?
fixedNumber: [1, 1], // 截圖框的寬高比例
full: true, // 是否輸出原圖比例的截圖
canMoveBox: false, // 截圖框能否拖動
original: false, // 上傳圖片按照原始比例渲染
centerBox: false, // 截圖框是否被限制在圖片里面
infoTrue: true, // true 為展示真實輸出圖片寬高 false 展示看到的截圖框?qū)捀?
canMove:true,
},
picsList: [], //頁面顯示的數(shù)組
// 防止重復(fù)提交
loading: false,
fileinfo:{}
}
},
methods: {
handleAvatarSuccess(res, file,fileList) {
//上傳成功后將圖片地址賦值給裁剪框顯示圖片
this.$nextTick(() => {
this.option.img = URL.createObjectURL(file.raw);
this.fileinfo = res
this.dialogVisible = true
})
},
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg'||file.type==='image/png';
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上傳頭像圖片只能是 JPG 格式!');
}
if (!isLt2M) {
this.$message.error('上傳頭像圖片大小不能超過 2MB!');
}
return isJPG && isLt2M;
},
finish() {
this.$refs.cropper.getCropBlob((data) => {
var fileName = 'goods' + this.fileinfo.uid
this.loading = true
//上傳阿里云服務(wù)器
//請求
})
}
}
}
</script>
<style scoped>
.avatar-uploader{
background:red!important;
width:150px;height:150px;
text-align: center;
line-height: 150px;
}
.el-icon-plus{
width:150px;height:150px;font-size:30px;
}
.cropper-content{
width:500px;height:500px;background: pink;
}
.cropper{
width:500px;
height:500px;
background: yellow;
}
</style>
關(guān)于vue.js組件的教程,請大家點擊專題vue.js組件學(xué)習(xí)教程進行學(xué)習(xí)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Vue實現(xiàn)圖片上傳的三種方式
- vue+elementUI實現(xiàn)表單和圖片上傳及驗證功能示例
- vue+elementUI實現(xiàn)圖片上傳功能
- vue.js 圖片上傳并預(yù)覽及圖片更換功能的實現(xiàn)代碼
- vue實現(xiàn)圖片上傳功能
- Vue2.0實現(xiàn)調(diào)用攝像頭進行拍照功能 exif.js實現(xiàn)圖片上傳功能
- Vue.js 2.0 移動端拍照壓縮圖片上傳預(yù)覽功能
- vue-quill-editor實現(xiàn)圖片上傳功能
- Vue+elementUI實現(xiàn)多圖片上傳與回顯功能(含回顯后繼續(xù)上傳或刪除)
- VUE+axios+php實現(xiàn)圖片上傳
相關(guān)文章
Vue?打包優(yōu)化之externals抽離公共的第三方庫詳解
這篇文章主要為大家介紹了Vue?打包優(yōu)化之externals抽離公共的第三方庫詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>2023-06-06
vue和H5 draggable實現(xiàn)拖拽并替換效果
這篇文章主要為大家詳細介紹了vue和H5 draggable實現(xiàn)拖拽并替換效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-07-07
Vue中使用fetch讀取本地txt文件的技術(shù)實現(xiàn)
在Vue.js應(yīng)用開發(fā)中,有時我們需要從本地讀取文本文件(如 .txt 文件)并將其內(nèi)容展示在頁面上,這種需求在處理配置文件、日志文件或靜態(tài)數(shù)據(jù)時非常常見,本文將詳細介紹如何在Vue中使用 fetch API 讀取本地 .txt 文件,并提供多個示例和使用技巧2024-10-10
稍微學(xué)一下Vue的數(shù)據(jù)響應(yīng)式(Vue2及Vue3區(qū)別)
這篇文章主要介紹了稍微學(xué)一下 Vue 的數(shù)據(jù)響應(yīng)式(Vue2 及 Vue3),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Vue中引入bootstrap.min.css的正確姿勢分享
這篇文章主要介紹了Vue中引入bootstrap.min.css的正確姿勢,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10

