<template>
<view class="demo">
<view class="" v-show="!canvas_img" style="z-index:999;">
<canvas :style="{ width: canvasW*2 + 'rpx', height: canvasH*2 + 'rpx' }" canvas-id="myCanvas" id="myCanvas01" style="z-index:99999999;"></canvas>
</view>
<view style="z-index:9999;position: absolute;">
<image :src="canvas_img" mode="widthFix" v-if="canvas_img" style="width:100vw;height:100vh"></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
canvasW: 0,
canvasH: 0,
SystemInfo: {},
goodsImg: {},
ewmImg: {},
ewmW: 100,
title1: '电动窗帘',
title2: '十大品牌评选',
isShow: false,
canvas_img:"",
goodsImgUrl:'../../static/poster/posterOne.png',
}
},
async onLoad() {
let that = this;
this.SystemInfo = await this.getSystemInfo();
let goodsImgUrl = this.goodsImgUrl;
let ewmImgUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAADeklEQVR42u3cUVKEQAxF0dn/pnUL\njslLB/rcT0thhGNVaMDPjxTo4xAILIElsCSwBJbAksASWAJLAktgCSwJLIElsCSwBJbAksASWAJL\nAktgCSwJLIElsCSwBJbAksASWAKrZzeB/rKvzZ/5298lfdzAAgsssMACC6xnw0ps59sTmT7QFUyT\nxw0ssMACCyywwHonrFMDbxeIyufp2m/XcQMLLLDAAgsssMCqDu/phdM0XLDAAgsssMACC6yTB6iy\n3w0nGyywwAILLLDAAus/JzgBNL2gOrlNN6HBAgsssMACC6zqomJ6oH76171MARZYYIEFFlhgbW/D\nTeuzwzVYYIEFFlhggXX78J7eTmX7iYXK9AUBWGCBBRZYYIF1F6xvB97K9z9lsbcL8dUr72CBBRZY\nYIF1yb3CbYP5toXNyoB/9co7WGCBBRZYYF0Iq7LYmFjkTHzO9ELrs8CBBRZYYIEFFlhHdx9Alhi0\nuz5n1wKm4R0ssMACCyywwJo+0F0PDE5elKQvbq54ugEssMACCyywLoRVGTwnX3BIvzTRNaSfukEO\nFlhggQUWWGDtHd5PvVCQODGTFwcJuGCBBRZYYIEF1nuG9wqgyRcuJqGkjxVYYIEFFlhggXXv8N51\nshMHN3Fj201osMACCyywwAKrE9bksJ+4UEijTPzsFcM7WGCBBRZYYIE1thiYWIA9tZiZfuARLLDA\nAgsssMB6Hqyug9WFrPLHkACXuJjwdANYYIEFFlhgWceqLiqmT3Bi8E9ccCQWeMECCyywwAILrGfD\nmlzAfPo2uwZ8sMACCyywwALrnbASB7pr8E+8ELEZLlhggQUWWGCBddcCaeVkT6JMPKyXePAQLLDA\nAgsssMB6D6xJuIlhdhJr5fcFCyywwAILLLDuHd4TQ2viwcA0gvTDgNfdhAYLLLDAAgss/x/ryHY2\nYEosIO9EBhZYYIEFFlhgnYSVGGYrJzi9GJt4YHDyDxsssMACCyywwAJrYvjtQlB5SLALPVhggQUW\nWGCBBVbnkJ4YnBMvWewZzMECCyywwAILrO2wEkC7IKaH7smhHiywwAILLLDAej+s9MsUia9v/tmd\nQz1YYIEFFlhggSWBJbAElgSWwBJYElgCS2BJYAksgSWBJbAElgSWwBJYElgCS2BJYAksgSWBJbAE\nlgSWwBJYElgCS2BJX/cLbA821BMbPggAAAAASUVORK5CYII='
this.goodsImg = await this.getImageInfo(goodsImgUrl);
this.ewmImg = await this.getImageInfo(ewmImgUrl);
this.canvasW = this.SystemInfo.windowWidth;
console.log(this.canvasW)
this.canvasH = this.SystemInfo
.windowHeight;
if (this.goodsImg.errMsg == 'getImageInfo:ok' && this.ewmImg.errMsg == 'getImageInfo:ok' && this.SystemInfo
.errMsg == 'getSystemInfo:ok') {
console.log('读取图片信息成功')
uni.showToast({
icon: 'loading',
mask: true,
duration: 1200,
title: '海报绘制中',
});
setTimeout(() => {
var ctx = uni.createCanvasContext('myCanvas', this);
ctx.setFillStyle('#fff');
ctx.fillRect(0, 0, this.canvasW, this.canvasH)
ctx.drawImage(goodsImgUrl, 0, 0, this.canvasW, this.canvasH)
ctx.drawImage(ewmImgUrl, this.canvasW-134, this.canvasW+140, this.ewmW, this.ewmW)
ctx.setFontSize(40);
ctx.setFillStyle('#fff');
ctx.font = "bold 40px webfont";
ctx.fillStyle = "#FCFAF8";
ctx.shadowBlur = 2;
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 2;
ctx.shadowColor = "#000000";
let width1 = (this.canvasW - 160) / 2;
let width2 = (this.canvasW - 240) / 2;
ctx.fillText(this.title1, width1, 130);
ctx.setFillStyle('#fff');
ctx.fillText(this.title2, width2, 180);
setTimeout(() => {
ctx.stroke();
ctx.draw(true, (ret) => {
this.isShow = true
uni.canvasToTempFilePath({
canvasId: 'myCanvas',
quality: 1,
complete: function(res) {
console.log(res.tempFilePath);
that.$nextTick(()=>{
that.canvas_img = res.tempFilePath;
});
uni.setStorageSync('filePath', res.tempFilePath);
},
})
});
}, 200)
}, 1000)
} else {
console.log('读取图片信息失败')
}
},
methods: {
getImageInfo(image) {
return new Promise((req, rej) => {
uni.getImageInfo({
src: image,
success: function(res) {
req(res)
},
});
})
},
getSystemInfo() {
return new Promise((req, rej) => {
uni.getSystemInfo({
success: function(res) {
req(res)
}
});
})
},
imgs(){
console.log(121)
}
}
}
</script>
<style>
@font-face {
font-family: 'webfont';
font-display: swap;
src: url('//at.alicdn.com/t/webfont_6ks3jctruok.eot');
src: url('//at.alicdn.com/t/webfont_6ks3jctruok.eot?#iefix') format('embedded-opentype'),
url('//at.alicdn.com/t/webfont_6ks3jctruok.woff2') format('woff2'),
url('//at.alicdn.com/t/webfont_6ks3jctruok.woff') format('woff'),
url('//at.alicdn.com/t/webfont_6ks3jctruok.ttf') format('truetype'),
url('//at.alicdn.com/t/webfont_6ks3jctruok.svg#NotoSansHans-Black') format('svg');
}
#font_span {
font-family: "webfont" !important;
font-style: normal;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0.2px;
-moz-osx-font-smoothing: grayscale;
font-weight: bold;
}
</style>