使用云开发扩展能力之前,需要先在云开发控制台安装相关扩展程序。具体步骤:
小程序基础库从1.14.1
版本开始支持。
使用云开发扩展能力需要额外引入 @cloudbase/extension-ci
npm包,具体引入办法:
在小程序根目录执行npm install --save @cloudbase/extension-ci
点击QQ小程序开发者顶部栏 - 工具 - 构建npm
在小程序代码中引入@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
}
}