开发微信小程序遇到的一些问题
2021/7/25 17:07:58
本文主要是介绍开发微信小程序遇到的一些问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
近期熟悉并开发了一个简单的微信小程序,时间花了大概7-8天
期间遇到了一些问题,大部分时间都是在解决这些问题
1. 基础库选择用户占比最高
2. 校验域名,在开发的时候可以不打勾,但是在决定审核之前要打勾进行测试
3. 微信获取用户信息API有变化
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html
我之前使用wx.getUserInfo API,然后因为基础库调整版本高,就一直返回匿名的用户信息,
所以改用了wx.getUserProfile
4. canvas一系列问题
(1) 画图片的圆角时
使用ctx.clip(); 后,要继续画其他内容的话记得 ctx.restore();
drawPromiseImage(ctx, canvas, data) { return new Promise(async (resolve, reject) => { let image = canvas.createImage(); image.src = await this.wxDownloadFile(data.url); if (data.round != 0) { ctx.save(); this.roundRect(ctx, data, true); // 使用了裁剪 } image.onload = () => { ctx.drawImage(image, data.x, data.y, data.width, data.height); if (data.round != 0) { ctx.restore(); // 恢复 } resolve() } image.onerror = e => { reject(e) } }) }, wxDownloadFile(url) { return new Promise((resolve, reject) => { wx.downloadFile({ url, success: (res) => { if (res.statusCode == 200) { resolve(res.tempFilePath); } else { reject() } }, fail: () => { reject() } }) }); }, roundRect(ctx, data, isClip) { let { x, y, width, height, round } = data; x = x * 1; y = y * 1; width = width * 1; height = height * 1; round = round * 1; if (width < 2 * round) round = width / 2; if (height < 2 * round) round = height / 2; ctx.beginPath(); ctx.moveTo(x + round, y); ctx.arcTo(x + width, y, x + width, y + height, round); ctx.arcTo(x + width, y + height, x, y + height, round); ctx.arcTo(x, y + height, x, y, round); ctx.arcTo(x, y, x + width, y, round); isClip&&ctx.clip(); },
(2) 下载图片
https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.saveImageToPhotosAlbum.html
因为下载图片不支持网络路径,所以需要小程序的API得到路径
https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.canvasToTempFilePath.html
可以wx.canvasToTempFilePath,得到的临时路径来下载,如果满足要求就可以直接用这个,我这边测试iPhone 8 Plus,得到的临时路径的图片是模糊的,所以我改用下面的方法
通过canvas生成的base64,转换成本地连接
https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFile.html
base64ToTempFilePath() { return new Promise((resolve, reject) => { const fs = wx.getFileSystemManager(); let imageName = new Date().getTime(); fs.writeFile({ filePath: `${wx.env.USER_DATA_PATH}/${imageName}.png`, data: this.data.canvasImage.slice(22), encoding: 'base64', success(res) { resolve(`${wx.env.USER_DATA_PATH}/${imageName}.png`) }, fail(res) { console.error(res) } }) }) }, async downloadImage(e) { let filePath = await this.base64ToTempFilePath(); wx.saveImageToPhotosAlbum({ filePath: filePath, success: () => { wx.showToast({ title: '已保存到相册' }) }, fail: res => { console.log(res) } }) },
这篇关于开发微信小程序遇到的一些问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20微信小程序开发入门指南
- 2024-12-20小程序 createCameraContext() 怎么实现识别条形码功能?-icode9专业技术文章分享
- 2024-11-22微信小程序的接口信息py可以抓到吗?-icode9专业技术文章分享
- 2024-11-22怎样解析出微信小程序二维码带的参数?-icode9专业技术文章分享
- 2024-11-22微信小程序二维码怎样解析成链接?-icode9专业技术文章分享
- 2024-11-22微信小程序接口地址的域名需要怎么设置?-icode9专业技术文章分享
- 2024-11-22微信小程序的业务域名有什么作用-icode9专业技术文章分享
- 2024-11-22微信小程序 image有类似html5的onload吗?-icode9专业技术文章分享
- 2024-11-22微信小程序中怎么实现文本内容超出行数后显示省略号?-icode9专业技术文章分享
- 2024-11-22微信小程序怎么实现分享样式定制和图片定制功能?-icode9专业技术文章分享