beelink/src/components/imghead.vue
2020-11-22 18:24:02 +08:00

100 lines
3.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="imghead">
<img id="image" />
<div class="submit-btn" @click="sub">{{lan.$t("baocun") }}</div>
</div>
</template>
<style lang="scss" scoped>
.imghead {
padding-top:0.3rem;
width: 550px;
// height: 550px;
// overflow: hidden;
#image{
width: 500px;
height: 500px;
}
.submit-btn {
width: 63px;
height: 23px;
background: #08ae98;
border-radius: 3px;
font-size: 10px;
font-weight: 500;
color: #ffffff;
text-align: center;
line-height: 23px;
cursor: pointer;
user-select: none;
margin: 20px 0 0 auto;
}
}
</style>
<script lang="ts">
import { useI18n } from '@/utils/i18n';
import { uploadflie } from '@/utils/vod';
import { defineComponent, onMounted } from "vue";
export default defineComponent({
props: {
url: {
type: File,
},
},
setup(props, ctx) {
const lan: any = useI18n();
let CROPPER: any;
onMounted(() => {
const reader = new FileReader();
if (props.url) {
reader.readAsDataURL(props.url);
reader.onload = () => {
const dataURL = reader.result;
//将img的src改为刚上传的文件的转换格式
const image: any = document.querySelector("#image");
console.log(image)
if(image){
console.log(110)
image.src = dataURL;
//创建cropper实例-----------------------------------------
CROPPER = new window.Cropper(image, {
aspectRatio: 1,
viewMode: 1,
background: false,
zoomable: false
});
}
};
}
});
function sub(){
if(CROPPER){
CROPPER.getCroppedCanvas({
maxWidth: 4096,
maxHeight: 4096,
fillColor: '#fff',
imageSmoothingEnabled: true,
imageSmoothingQuality: 'high',
}).toBlob(async (blob: any) => {
//之后就可以愉快的将blob数据发送至后端啦可根据自己情况进行发送我这里用的是axios
// 第三个参数为文件名,可选填.
const file = new File([blob], 'name.png',{type: "image/png"});
const res = await uploadflie(file, (info: any) => {
console.log(info);
});
ctx.emit("upload", res)
})
}
}
return {
lan,
sub
};
},
});
</script>