vue 实现ps图片编辑_Vue项目图片剪切上传——vue-cropper的使用

本文介绍了如何在Vue项目中使用vue-cropper组件实现图片剪切和上传功能。详细讲解了组件的配置选项,包括图片质量、原图比例截图、旋转、缩放等,并提供了上传图片到服务器的示例代码。
摘要由CSDN通过智能技术生成

头像

选择图片

ref="cropper":img="option.img":outputSize="option.size":outputType="option.outputType":info="true":full="option.full":canMove="option.canMove":canMoveBox="option.canMoveBox":original="option.original":autoCrop="option.autoCrop":autoCropWidth="option.autoCropWidth":autoCropHeight="option.autoCropHeight":fixedBox="option.fixedBox"@realTime="realTime"@imgLoad="imgLoad"

>

exportdefault{

data() {return{

headImg:'',//剪切图片上传

crap: false,

previews: {},

option: {

img:'',

outputSize:1, //剪切后的图片质量(0.1-1)

full: false,//输出原图比例截图 props名full

outputType: 'png',

canMove:true,

original:false,

canMoveBox:true,

autoCrop:true,

autoCropWidth:150,

autoCropHeight:150,

fixedBox:true},

fileName:'', //本机文件地址

downImg: '#',

imgFile:'',

uploadImgRelaPath:'', //上传后的图片的地址(不带服务器域名)

}

},

components: {

VueCropper

},

methods: {

//放大/缩小

changeScale(num) {

console.log('changeScale')

num= num || 1;this.$refs.cropper.changeScale(num);

},//坐旋转

rotateLeft() {

console.log('rotateLeft')this.$refs.cropper.rotateLeft();

},//右旋转

rotateRight() {

console.log('rotateRight')this.$refs.cropper.rotateRight();

},//上传图片(点击上传按钮)

finish(type) {

console.log('finish')

let _this= this;

let formData= newFormData();//输出

if (type === 'blob') {this.$refs.cropper.getCropBlob((data) =>{

let img=window.URL.createObjectURL(data)this.model = true;this.modelSrc =img;

formData.append("file", data, this.fileName);this.$http.post(Api.uploadSysHeadImg.url, formData, {contentType: false, processData: false, headers:{'Content-Type': 'application/x-www-form-urlencoded'}})

.then((response)=>{var res =response.data;if(res.success == 1){

$('#btn1').val('');

_this.imgFile= '';

_this.headImg= res.realPathList[0]; //完整路径

_this.uploadImgRelaPath = res.relaPathList[0]; //非完整路径

_this.$message({  //element-ui的消息Message消息提示组件

type:'success',

message:'上传成功'});

}

})

})

}else{this.$refs.cropper.getCropData((data) =>{this.model = true;this.modelSrc =data;

})

}

},//实时预览函数

realTime(data) {

console.log('realTime')this.previews =data

},//下载图片

down(type) {

console.log('down')var aLink = document.createElement('a')

aLink.download= 'author-img'

if (type === 'blob') {this.$refs.cropper.getCropBlob((data) =>{this.downImg =window.URL.createObjectURL(data)

aLink.href=window.URL.createObjectURL(data)

aLink.click()

})

}else{this.$refs.cropper.getCropData((data) =>{this.downImg =data;

aLink.href=data;

aLink.click()

})

}

},//选择本地图片

uploadImg(e, num) {

console.log('uploadImg');var _this = this;//上传图片

var file = e.target.files[0]

_this.fileName=file.name;if (!/\.(gif|jpg|jpeg|png|bmp|GIF|JPG|PNG)$/.test(e.target.value)) {

alert('图片类型必须是.gif,jpeg,jpg,png,bmp中的一种')return false}var reader = newFileReader();

reader.οnlοad=(e) =>{

let data;if (typeof e.target.result === 'object') {//把Array Buffer转化为blob 如果是base64不需要

data = window.URL.createObjectURL(newBlob([e.target.result]))

}else{

data=e.target.result

}if (num === 1) {

_this.option.img=data

}else if (num === 2) {

_this.example2.img=data

}

}//转化为base64

//reader.readAsDataURL(file)

//转化为blob

reader.readAsArrayBuffer(file);

},

imgLoad (msg) {

console.log('imgLoad')

console.log(msg)

}

},

}

width: 720px;

margin:0auto;

.oper-dv {

height:20px;

text-align:right;

margin-right:100px;

a {

font-weight: 500;&:last-child {

margin-left: 30px;

}

}

}

.info-item {

margin-top: 15px;

label {

display: inline-block;

width: 100px;

text-align: right;

}

.sel-img-dv {

position: relative;

.sel-file {

position: absolute;

width: 90px;

height: 30px;

opacity:0;

cursor: pointer;

z-index: 2;

}

.sel-btn {

position: absolute;

cursor: pointer;

z-index: 1;

}

}

}

}

.cropper-content{

display: flex;

display:-webkit-flex;

justify-content: flex-end;-webkit-justify-content: flex-end;

.cropper{

width: 260px;

height: 260px;

}

.show-preview{

flex:1;-webkit-flex: 1;

display: flex;

display:-webkit-flex;

justify-content: center;-webkit-justify-content: center;

.preview{

overflow: hidden;

border-radius: 50%;

border:1px solid #cccccc;

background: #cccccc;

margin-left: 40px;

}

}

}

.cropper-content .show-preview .preview {margin-left: 0;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值