返回

实现小程序 + 云开发 随机读取数据生成分享图片的终极指南

前端

  1. 创建一个新的项目

首先,我们需要创建一个新的项目。您可以使用任何您喜欢的 IDE,但我们推荐使用 Visual Studio Code。

一旦您创建了一个新的项目,您需要安装必要的依赖。您可以通过运行以下命令来做到这一点:

npm install --save @cloudbase/node-sdk

2. 初始化云开发环境

接下来,我们需要初始化云开发环境。您可以通过运行以下命令来做到这一点:

tcb init

这将创建一个新的 .tcb 文件夹,其中包含所有必要的配置文件。

3. 创建数据库

现在,我们需要创建一个数据库来存储我们的数据。您可以通过运行以下命令来做到这一点:

tcb database create

这将在您的云开发控制台中创建一个新的数据库。

4. 添加数据

现在,我们需要向我们的数据库中添加一些数据。您可以通过运行以下命令来做到这一点:

tcb database add --collection collection_name --data '[{"id": 1, "name": "John Doe"}, {"id": 2, "name": "Jane Doe"}]'

这将在名为 collection_name 的集合中添加两条数据。

5. 创建小程序

现在,我们需要创建一个小程序。您可以通过运行以下命令来做到这一点:

npm run dev

这将在您的本地机器上启动一个开发服务器。

6. 编写小程序代码

现在,我们需要编写小程序代码。您可以在 src/pages/index/index.js 文件中找到小程序代码。

// 获取随机数据
const getRandomData = () => {
  return new Promise((resolve, reject) => {
    tcb.database().collection('collection_name').get().then(res => {
      const data = res.data
      const randomIndex = Math.floor(Math.random() * data.length)
      resolve(data[randomIndex])
    }).catch(err => {
      reject(err)
    })
  })
}

// 生成分享图片
const generateShareImage = (data) => {
  return new Promise((resolve, reject) => {
    const canvas = wx.createCanvasContext('share-image')
    canvas.setFillStyle('#ffffff')
    canvas.fillRect(0, 0, 300, 300)

    // 绘制文本
    canvas.setFontSize(16)
    canvas.setFillStyle('#000000')
    canvas.fillText(data.name, 10, 20)

    // 绘制头像
    const avatarUrl = data.avatarUrl
    canvas.save()
    canvas.beginPath()
    canvas.arc(50, 50, 20, 0, 2 * Math.PI)
    canvas.clip()
    canvas.drawImage(avatarUrl, 30, 30, 40, 40)
    canvas.restore()

    // 绘制二维码
    const qrCodeUrl = data.qrCodeUrl
    canvas.drawImage(qrCodeUrl, 100, 100, 80, 80)

    // 绘制保存按钮
    canvas.setFillStyle('#ffffff')
    canvas.fillRect(190, 200, 100, 40)
    canvas.setFontSize(16)
    canvas.setFillStyle('#000000')
    canvas.fillText('保存', 200, 220)

    // 生成图片
    canvas.draw(true, () => {
      wx.canvasToTempFilePath({
        canvasId: 'share-image',
        success: (res) => {
          resolve(res.tempFilePath)
        },
        fail: (err) => {
          reject(err)
        }
      })
    })
  })
}

// 保存图片到本地
const saveImageToLocal = (tempFilePath) => {
  return new Promise((resolve, reject) => {
    wx.saveImageToPhotosAlbum({
      filePath: tempFilePath,
      success: (res) => {
        resolve(res)
      },
      fail: (err) => {
        reject(err)
      }
    })
  })
}

// 主函数
Page({
  data: {
    shareImage: ''
  },
  onLoad() {
    this.getRandomData()
  },
  getRandomData() {
    getRandomData().then(data => {
      this.setData({
        data
      })
    }).catch(err => {
      console.log(err)
    })
  },
  generateShareImage() {
    generateShareImage(this.data.data).then(tempFilePath => {
      this.setData({
        shareImage: tempFilePath
      })
    }).catch(err => {
      console.log(err)
    })
  },
  saveImageToLocal() {
    saveImageToLocal(this.data.shareImage).then(res => {
      wx.showToast({
        title: '保存成功',
        icon: 'success'
      })
    }).catch(err => {
      console.log(err)
    })
  }
})

7. 部署小程序

现在,我们需要将小程序部署到云端。您可以通过运行以下命令来做到这一点:

npm run build

这将在 dist 文件夹中创建一个新的文件夹。

tcb deploy

这将把您的小程序部署到云端。

8. 测试小程序

现在,您可以通过扫描二维码或在小程序开发工具中预览来测试您的小程序。

9. 恭喜!

您现在已经成功地创建了一个小程序,允许用户点击按钮来生成一个包含随机数据的分享图片。