阅读(1999) (12)

QQ小程序 在云函数中使用

2020-07-10 13:41:17 更新

首次使用

使用云开发扩展能力之前,需要先在云开发控制台安装相关扩展程序。具体步骤:

  1. 打开云开发扩展控制台
  2. 选择希望安装的扩展
  3. 单击【安装】,进行扩展程序的安装
  4. 等待扩展程序安装完成即可使用

在小程序中使用

小程序基础库从1.14.1版本开始支持。 使用云开发扩展能力需要额外引入 @cloudbase/extension-ci npm包,具体引入办法:

  1. 在小程序根目录执行npm install --save @cloudbase/extension-ci
  2. 点击QQ小程序开发者顶部栏 - 工具 - 构建npm
  3. 在小程序代码中引入@cloudbase/extension-ci

示例代码

const extCI = require('@cloudbase/extension-ci');


// 初始化环境
qq.cloud.init({
    env:"test-x1dzi"
})


// 注册云开发扩展
qq.cloud.registerExtension(extCI);


// 用户选择图片
qq.chooseImage({
  success:res=>{
    // 使用文件管理读取文件内容
    const fsm = qq.getFileSystemManager();
    const filePath = res.tempFilePaths[0];
    const cloudPath = `demo.jpeg`;


    fsm.readFile({
      filePath:filePath,
      success:res2=>{


        const fileContent = res2.data; // 格式为ArrayBuffer


        // 使用云开发扩展能力转换图片格式
        qq.cloud.invokeExtension("CloudInfinite", {
          action: "ImageProcess",
          cloudPath: cloudPath, // 存储图像的绝对路径,与qq.cloud.uploadFile中一致
          fileContent:fileContent, // 该字段可选,文件内容:ArrayBuffer|Buffer。有值,表示上传时处理图像;为空,则处理已经上传的图像
          operations: {
            rules: [
              {
                  fileid: `/image_process/demo.png`,// 处理结果的文件路径,如以’/’开头,则存入指定文件夹中,否则,存入原图文件存储的同目录
                  rule: "imageView2/format/png" // 处理样式参数,与下载时处理图像在url拼接的参数一致
              }
            ]
          }
        }).then(res=>{
          console.log(res)
        })
      }
    })
  }
})

在云函数中使用 在云函数目录安装 @cloudbase/extension-ci

npm install @cloudbase/extension-ci

示例代码:

const cloud = require('qq-server-sdk');
const extCI = require('@cloudbase/extension-ci');
// 初始化环境
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})


// 注册云开发扩展
cloud.registerExtension(extCI);


// 云函数入口函数
exports.main = async (event, context) => {


  const cloudPath = event.cloudPath;


  // 使用云开发扩展能力生成水印
  const res = await cloud.invokeExtension("CloudInfinite", {
    action: "ImageProcess",
    cloudPath: cloudPath, // 存储图像的绝对路径,与cloud.uploadFile中一致
    operations: {
      rules: [
        {
            fileid: `/image_process/${cloudPath}`,// 处理结果的文件路径,如以’/’开头,则存入指定文件夹中,否则,存入原图文件存储的同目录
            // 处理样式参数,与下载时处理图像在url拼接的参数一致
            rule: "watermark/2/text/6IW-6K6v5LqRwrfkuIfosaHkvJjlm74/fill/IzNEM0QzRA/fontsize/20/dissolve/50/gravity/northeast/dx/20/dy/20/batch/1/degree/45" 
        }
      ]
    }
  })


  return {
    res
  }
}