uniapp生成二维码海报

<template>
<view class="pc-container">
        <image :src="imgurl" mode="aspectFill" @longpress="saveImage"></image>
        <canvas canvas-id="mycanvas" style="width: 590rpx;height: 1049rpx;" v-show="canvasShow"></canvas>
        
</view>
</template>

<script>
export default {
          data() {    
	            return {
                imgurl:'',
                canvasShow:true,
            }
        },
        onHide() {
            uni.removeStorageSync('person-card');
        },
        mounted() {
//如果本地有图片了,直接取,解决一些页面切换canvas没有重画
            if(uni.getStorageSync('person-card')){
                this.canvasShow = false;
                this.imgurl = uni.getStorageSync('person-card');
            }else{
                this.canvasImage();
            }    
        },
        methods: {
            canvasImage(){
                uni.showLoading({
                    title:'加载中',
                    mask:true
                })
                let myCanvas = uni.createCanvasContext('mycanvas', this); 
                //画布尺寸
                // 坐标(0,0) 表示从此处开始绘制,相当于偏移。
				//背景
				myCanvas.drawImage('../../static/hb.jpg',0,0,325,578);
				
                //头像
                //myCanvas.drawImage('../../static/logo.png',33,44,65,65);
                //参数:图片,左偏移,上偏移,宽,高
                //认证图标
                //myCanvas.drawImage('../../static/logo.png',44,117,7,7);
                
                //let phone = '12456798798';
                //myCanvas.fillStyle = '#101010';
                
                //let fontSize = 10;
                //myCanvas.font = `${fontSize}px Arial`;//绘制文字
                //myCanvas.fillText('认证',55,124);
                //let fontSizea = 14;
                //myCanvas.font = `${fontSizea}px Arial`;//绘制文字
               // myCanvas.fillText('姓名:  木村林',124,58);
                //myCanvas.fillText(`手机:  ${phone}`,124,76);
                //myCanvas.fillText('专业:  木村林',124,94);
                //myCanvas.fillText('邀请码:  木村林',124,112);
                
                //myCanvas.fillText('这是我的二维码名片,请惠存!',49,185); 
                //二维码
                myCanvas.drawImage('../../static/ewm.png',100,417,120,120);
                 
                //myCanvas.fillText('扫码进入小程序',69,432);
                //myCanvas.fillText('添加我的名片',103,458);  
                
                //开始绘画,必须调用这一步,才会把之前的一些操作实施
                myCanvas.draw(true,()=>{
                    uni.canvasToTempFilePath({
                        canvasId: 'mycanvas',
                        success: (res) => {
                            // 在H5平台下,tempFilePath 为 base64
                            this.imgurl = res.tempFilePath;
                            this.canvasShow = false;
                            uni.hideLoading();
                            uni.setStorageSync('person-card',this.imgurl);
                          },
                        fail: () => {
                            uni.showToast({
                                title: '名片加载失败',
                                duration: 2000 
                            });
                        }
                    });
                });
                
            },
            saveImage(){
                uni.showActionSheet({
                    itemList: ['保存图片','取消'], 
                    success: (res) => {
                        if(res.tapIndex == 0){
                            uni.saveImageToPhotosAlbum({
                                filePath: this.imgurl,//    图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径
                                success: () => {
                                    uni.showToast({
                                        title: '保存成功',
                                        duration: 2000
                                    });
                                },
                                fail: () => {
                                    uni.showToast({
                                        title: '保存失败',
                                        duration: 2000 
                                    });
                                }
                            });
                        }
                    },
                    fail: function (res) {
                        console.log(res.errMsg);
                    }
                });
            }
        }
}
</script>

<style lang="scss">
image{
    width: 99%;
    min-height: 996rpx;
    border: 1px solid #BBBBBB;
        display: block;
}
.pc-container{
    width: 590rpx;
    height: 1349rpx;
    margin: 0 auto;
    padding-top: 46rpx;
    overflow: hidden;
}

</style>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不熬夜的码农。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值