1.在一二月份做项目的时候,需要做一个微信小程序的自定义的二维码,在此记录与分享如何用Canvas画图怎么自定义一个美观的二维码分享图。先展示下效果:
2.展示的是一个个人中心的小demo,下文会把这个demo的地址分享,导入项目后,点击分享推荐就可得到该效果。
页面//PersonalPage.wxmlviewclass='user'viewclass='firstlayout'imagesrc="{{img}}"class='firstimagestyle'/imageviewclass='firstfontstyle'{{name}}/viewviewclass='secondlayout'viewclass='secondlayoutitem'viewclass='firstfontstyle'积分:/viewviewclass='firstfontstyle'{{scores}}/view/view!--viewclass='lineview'/view--viewclass='secondlayoutitem'viewclass='firstfontstyle'余额:/viewviewclass='firstfontstyle'{{balance}}/view/view/view/viewviewclass='user-item'viewclass='item'bindtap='bindViewTapbasic'imageclass='secondimagestyle'src='/images/personCenter/5.png'/imageviewclass='item-title'基本信息/viewimagesrc='/images/personCenter/2.png'class='thirdimagestyle'/image/viewviewclass='item'bindtap='bindViewTapaddress'imageclass='secondimagestyle'src='/images/personCenter/3.png'/imageviewclass='item-title'我的地址/viewimagesrc='/images/personCenter/2.png'class='thirdimagestyle'/image/viewviewclass='item'bindtap="bindViewTap"imageclass='secondimagestyle'src='/images/personCenter/7.png'/imageviewclass='item-title'我的订单/viewimagesrc='/images/personCenter/2.png'class='thirdimagestyle'/image/viewviewclass='item'bindtap="onShareTap"imageclass='secondimagestyle'src='/images/personCenter/4.png'/imageviewclass='item-title'分享推荐/viewimagesrc='/images/personCenter/2.png'class='thirdimagestyle'/image/viewviewclass='item'bindtap='bindViewTapsetup'imageclass='secondimagestyle'src='/images/personCenter/6.png'/imageviewclass='item-title'关于我们/viewimagesrc='/images/personCenter/2.png'class='thirdimagestyle'/image/view/view/view//二维码分享图是隐藏的viewclass="bg"bindtap='hideview'style='display:{{display}}'/viewviewclass="show"bindtap='hideview'style='display:{{display}}'viewclass='containera'imageclass="imagesa"src="{{shareImgSrc}}"/imageviewclass='fourlayoutstylea'buttonsize="{{primarySize}}"bindtap="showLocal"保存分享图片/button/viewviewclass="canvas-box"canvascanvas-id="myCanvas"style="width:100%;height:{{windowHeight}}px;"/canvas/view/view/view布局//PersonalPage.wxsspage{width:100%;height:100%;}.user{background:rgb(245,245,245);width:100%;height:100%;}.user-item{margin-top:30rpx;width:100%;display:flex;flex-direction:column;}.item{background:#fff;height:100rpx;margin-top:20rpx;line-height:100rpx;display:flex;justify-content:space-between;}.item-title{flex-grow:4;margin-left:20rpx;}.container{/*弹性模型*/display:flex;/*垂直方向列方向排布*/flex-direction:column;/*居中*//*align-items:center;*//*要从整体解决排布的问题是最好的方案*/background:rgb(245,245,245);}.containe1{margin-top:50rpx;width:100%;display:flex;flex-direction:column;}.firstlayout{/*弹性模型*/display:flex;/*垂直方向列方向排布*/flex-direction:column;/*居中*/align-items:center;/*要从整体解决排布的问题是最好的方案*/width:100%;height:400rpx;background:#21bba6;}.firstimagestyle{width:180rpx;height:180rpx;margin:20rpx;border-radius:50%;border:3pxsolid#FFFFFF;}.firstfontstyle{font-size:34rpx;color:#FFFFFF;}.secondlayout{width:550rpx;height:50rpx;/*弹性模型*/display:flex;flex-direction:row;/*居中*//*align-items:center;*/justify-content:center;margin-top:25rpx;}.secondlayoutitem{width:50%;display:flex;flex-direction:row;justify-content:center;}.lineview{width:2rpx;height:40rpx;background:#FFFFFF;margin-top:6rpx;}.secondimagestyle{width:40rpx;height:40rpx;margin:30rpx;}.fourthlayout{width:50%;height:100%;text-align:right;}.thirdimagestyle{width:60rpx;height:60rpx;margin:20rpx;}.secondfontstyle{flex-grow:4;margin-left:40rpx;}.lineviewtwo{width:100%rpx;height:1px;background:#708090;}.bg{display:none;position:absolute;top:0%;left:0%;width:100%;height:100%;background-color:black;z-index:1001;-moz-opacity:0.7;opacity:0.70;filter:alpha(opacity=70);}.show{text-align:center;position:absolute;top:5%;left:10%;width:80%;height:90%;z-index:1002;}.canvas-box{height:100%;width:100%;position:fixed;left:0;top:999999rpx;}.containera{display:flex;flex-direction:column;width:100%;height:100%;position:relative;}image{width:100%;height:75%;}.fourlayoutstylea{width:50%;height:200rpx;align-items:center;position:absolute;bottom:0;left:50%;margin-left:-25%;}Canvas画图//点击事件onShareTap:function(event){wx.showLoading({title:'生成中',})this.setData({display:"block",})varthat=this;that.onshow("溯夜","../../images/personCenter/1.jpg");//wx.getImageInfo({//src:app.globalData.img,//success:function(sres){//that.onshow(app.globalData.name,sres.path);//}//})},3.在这里注意的是,微信小程序不能直接获取网络上的图片资源,如果想要引用网络上的图片资源,需要缓存,可以调用wx.getImageInfo方法缓存,缓存成功该方法会返回图片的地址,这个地址微信小程序可以直接引用。
onshow:function(name,img){varthat=this;//canvas绘制文字和图片,创建画图constctx=wx.createCanvasContext('myCanvas');//绘制背景图varbgImgPath='../../images/personCenter/17.jpg'varimgPath='../../images/personCenter/ma.jpg';//二维码ctx.drawImage(bgImgPath,0,0,this.data.windowWidth,280);ctx.setFillStyle('white')ctx.fillRect(0,280,300,120);ctx.drawImage(imgPath,190,290,100,100);ctx.drawImage(img,10,290,40,40)//绘制字体,颜色,与位置ctx.setFontSize(14)ctx.setFillStyle('#6F6F6F')ctx.fillText(name,63,314)ctx.setFontSize(15)ctx.setFillStyle('#111111')ctx.fillText('亲们快来使用回收利器',10,350)ctx.fillText(name+'在筑梦回收',10,370)ctx.setFontSize(10)ctx.fillText('长按扫码查看详情',10,390)//canvasToTempFilePath必须要在draw的回调中执行,否则会生成失败,官方文档有说明ctx.draw(false,setTimeout(function(){wx.canvasToTempFilePath({x:0,y:0,width:that.data.windowWidth,height:that.data.windowHeight,destWidth:that.data.windowWidth*2,destHeight:that.data.windowHeight*2,canvasId:'myCanvas',success:function(res){console.log(res.tempFilePath);wx.hideLoading();that.setData({shareImgSrc:res.tempFilePath})},fail:function(res){wx.hideLoading();wx.showToast({title:'生成失败',icon:"none"})}})},200));},4.这里一定小心注意的是,canvasToTempFilePath必须要在draw的回调中执行,否则会生成失败,官方文档有说明。而且,为保证图片生成的清晰度,destWidth与destHeight需设置成你原来期待高度与宽度的n倍,一般两到三倍就行了,否则图片很大,生成较慢。
保存在本地//保存在本地showLocal:function(){varthat=this;console.log(that.data.shareImgSrc);wx.saveImageToPhotosAlbum({filePath:that.data.shareImgSrc,success(res){wx.showModal({title:'存图成功',content:'图片成功保存到相册了,去发圈噻~',showCancel:false,confirmText:'好哒',confirmColor:'#21bba6',success:function(res){if(res.confirm){console.log('用户点击确定');}}})},fail:function(){wx.showToast({title:'保存失败',icon:"none"})}})}})5.
6.这里有个demo下载地址啦
小程序怎么分享二维码-微信小程序自定义二维码分享图--Canvas画图及注意事项-小程序二维码
浏览量:1915
时间:
来源:suye233
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。 -

零代码 + AI 双轮驱动|即速应用解锁人工智能小程序开发新范式
无需代码、无需 AI 算法功底,普通人也能快速搭建智能小程序。即速应用将人工智能与零代码开发深度融合,推出 AI 智能生成能力,用户通过自然语言描述需求,AI 自动生成小程序页面、功能模块与后台配置,覆盖商城、预约、同城、社区团购等全场景。平台内置 AI 智能推荐、智能客服、用户画像分析等能力,一键对接微信生态,打通视频号、企业微信、短信跳转,帮企业快速落地 AI 应用,抢占智慧经营先机,让每家企业都拥有 AI 驱动的智慧店铺。












