吐槽:某厂的开发文档写的跟屎一样
1、后台返回accessToken,小程序请求获取小程序码
uni.request({
url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + res.data.accessToken,
method: 'POST',
headers: {
'Content-Type': 'json'
},
responseType: 'arraybuffer',
data: {
"scene": "a=1", // 参数
"is_hyaline": true //透明底色
},
success: (res) => {
// 将返回的图片buffer生成图片,并保存至临时用户文件中
const fs = wx.getFileSystemManager();
const FILE_BASE_NAME = 'code';
let filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.png`;
fs.writeFileSync(filePath, res.data)
// filePath就是图片的本地路径
that.filePath = filePath
that.qrcode(filePath)
},
fail(e) {
console.log(e)
}
});
2、将生成的小程序码绘制到海报上 --- canvas
let that = this
const query = wx.createSelectorQuery()
query.select('#myCanvas')
.fields({
node: true,
size: true
})
.exec((res) => {
const canvas = res[0].node
const ctx = canvas.getContext('2d')
const headerImg = canvas.createImage();
const backImg = canvas.createImage();
headerImg.src = that.filePath;
backImg.src = '../../static/wish.png';
backImg.onload = () => {
ctx.drawImage(backImg, 0, 0, 150, 100)
}
headerImg.onload = () => {
ctx.drawImage(headerImg, 0, 0, 150, 100)
}
})
3、将生成的小程序码绘制到海报上 --- canvas离屏绘制
// 创建离屏 2D canvas 实例
const canvas = wx.createOffscreenCanvas({
type: '2d',
width: 300,
height: 150
})
// 获取 context。注意这里必须要与创建时的 type 一致
const context = canvas.getContext('2d')
// 创建一个图片
const image = canvas.createImage()
// 等待图片加载
image.src = '../../static/wish.png' // 要加载的图片 url
image.onload = () => {
// 把图片画到离屏 canvas 上
context.clearRect(0, 0, 300, 150)
context.drawImage(image, 0, 0, 300, 150)
// 获取画完后的数据
const imgData = context.getImageData(0, 0, 300, 150)
console.log(imgData)
// 图片的base64格式
console.log(context.canvas.toDataURL())
that.src = context.canvas.toDataURL()
}
END
本文来自博客园,作者:无聊猿,公众号【无聊猿】,转载请注明原文链接:https://www.cnblogs.com/wuliaoyuan/p/15824424.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端