欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 小程序实现海报生成方案思路

小程序实现海报生成方案思路

2024/10/24 9:30:36 来源:https://blog.csdn.net/weixin_44943128/article/details/141291388  浏览:    关键词:小程序实现海报生成方案思路

微信小程序有个需求,生成一张海报,在海报上显示二维码。

前提:

二维码由前端进行生成

海报由网络图片

思路:

把二维码&海报都进行图片上传转换成网络图片,再进行转换成base64(这一步也可以使用其他方式直接转换成base)

使用canvas进行图片大小调整。

可以获取网络地址图片的长宽,进行直接绘制canvas。

绘制完成之后直接把canvas转成临时图片。以供渲染

具体实现函数:

async makeCanvasTP(batp, qrtp) {try {const query = uni.createSelectorQuery().in(this);// 选择类名为 .some-class 的节点query.select('.masktpcontent').boundingClientRect(async (data) => {// data 包含了节点的尺寸信息,如宽、高等if (data) {console.log('元素的宽度:', data.width);this.widths = data.widthconst context = uni.createCanvasContext('shareTp');// 给整个canvas填充白色背景(这个如果不加上的话,在APP端生成的海报没有白色背景)context.setFillStyle('#ffffff');context.fillRect(0, 0, 500, 1000);const shopImgRes = await uni.downloadFile({url: batp});console.log("shangp", shopImgRes)context.drawImage(shopImgRes[1].tempFilePath, 0, 0, 500, 1000);// context.draw(true);// 绘制二维码// this.codeImg是上面获取到的图片const qrImgRes = await uni.downloadFile({url: qrtp});context.drawImage(qrImgRes[1].tempFilePath, 500 - 130, 890, 100, 100);context.draw(true);// 把canvas转成base64wx.canvasToTempFilePath({canvasId: 'shareTp',success: (canvasres) => {console.log(canvasres.tempFilePath)this.canvasresImg = canvasres.tempFilePath}})uni.hideLoading()}}).exec(); // 执行选择器查询} catch (e) {uni.hideLoading()uni.showToast({title: e,icon: 'none',duration: 3000});} finally {}},

上面代码使用的长宽初始根据屏幕宽度调整,后续调整为常量宽度。

可以直接根据需求进行调整

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com