【使用指引】在云函数中如何调用腾讯云万象(CI)的图片处理能力#230
要在云开发 CloudBase 的云函数中调用腾讯云万象(Cloud Infinite,CI)的图片处理能力,你可以利用 CI 提供的 API 或者 SDK。万象是对象存储(COS)的一个功能模块,因此,其图片处理能力通常是通过 COS 的 API 来调用的。
下面我将分步介绍如何在云函数中实现这一功能,并提供一个使用 Node.js 的示例。
腾讯云万象的图片处理功能主要有两种调用方式:
在云函数中,使用 SDK 是更方便和推荐的方式。
在编写云函数之前,你需要做好以下准备:
package.json
cos-nodejs-sdk-v5
下面是一个使用 cos-nodejs-sdk-v5 在云函数中进行图片处理的示例。
这个例子演示如何从一个 COS 路径读取图片,进行裁剪(例如,裁剪为 500x500 像素),然后将其作为处理后的图片上传回 COS。
// index.js const COS = require('cos-nodejs-sdk-v5'); // 腾讯云相关配置,推荐从环境变量中获取,更安全 const secretId = process.env.TENCENTCLOUD_SECRETID; const secretKey = process.env.TENCENTCLOUD_SECRETKEY; const bucket = 'your-bucket-name-1250000000'; // 替换为你的存储桶名称和 APPID const region = 'ap-shanghai'; // 替换为你的存储桶所在地域 const cos = new COS({ SecretId: secretId, SecretKey: secretKey, }); /** * 云函数主入口 * @param {object} event - 云函数触发事件 * @param {object} context - 云函数上下文 */ exports.main = async (event, context) => { // 从事件中获取需要处理的图片信息,例如通过 HTTP 触发时 // const { imageUrl } = event; const sourceKey = 'path/to/source-image.jpg'; // 待处理的图片路径 const destinationKey = 'path/to/processed-image.jpg'; // 处理后图片保存的路径 try { // 1. 获取图片处理参数 // 万象图片处理的参数需要拼接在请求 URL 的后面 // 这里以裁剪为例,参数 d=500x500 表示将图片处理成 500x500 // 更多参数可以参考腾讯云万象文档: // https://cloud.tencent.com/document/product/460/36551 const ciProcessParams = `?imageMogr2/thumbnail/!500x500r/gravity/Center/crop/500x500`; // 2. 使用 COS SDK 的 getObject 方法获取处理后的图片 // 万象的图片处理能力实际上是作为 COS getObject 的一个参数来调用的 const res = await cos.getObject({ Bucket: bucket, Region: region, Key: sourceKey, Query: ciProcessParams }); // 3. 将处理后的图片上传到新的路径 const uploadRes = await cos.putObject({ Bucket: bucket, Region: region, Key: destinationKey, Body: res.Body, // getObject 返回的 Body 就是处理后的图片数据 ContentType: 'image/jpeg' }); console.log('图片处理成功,上传到:', destinationKey); return { success: true, processedUrl: `https://${bucket}.cos.${region}.myqcloud.com/${destinationKey}` }; } catch (err) { console.error('图片处理失败:', err); return { success: false, message: '图片处理失败' }; } };
index.js
TENCENTCLOUD_SECRETID
TENCENTCLOUD_SECRETKEY
TencentCloudBaseSCFExecutionRole
COS
cos:GetObject
cos:PutObject
在云函数中调用腾讯云万象的图片处理,核心步骤是:
cos.getObject
Query
getObject
这种方式可以在服务端实现复杂的图片处理逻辑,减轻前端设备的压力,并利用云函数强大的计算能力和腾讯云万象的专业能力。
要在云开发 CloudBase 的云函数中调用腾讯云万象(Cloud Infinite,CI)的图片处理能力,你可以利用 CI 提供的 API 或者 SDK。万象是对象存储(COS)的一个功能模块,因此,其图片处理能力通常是通过 COS 的 API 来调用的。
下面我将分步介绍如何在云函数中实现这一功能,并提供一个使用 Node.js 的示例。
1. 了解腾讯云万象图片处理
腾讯云万象的图片处理功能主要有两种调用方式:
在云函数中,使用 SDK 是更方便和推荐的方式。
2. 前提准备
在编写云函数之前,你需要做好以下准备:
package.json文件中,你需要添加cos-nodejs-sdk-v5这个依赖包。3. 编写云函数代码(Node.js)
下面是一个使用
cos-nodejs-sdk-v5在云函数中进行图片处理的示例。示例:裁剪并压缩图片
这个例子演示如何从一个 COS 路径读取图片,进行裁剪(例如,裁剪为 500x500 像素),然后将其作为处理后的图片上传回 COS。
// index.js const COS = require('cos-nodejs-sdk-v5'); // 腾讯云相关配置,推荐从环境变量中获取,更安全 const secretId = process.env.TENCENTCLOUD_SECRETID; const secretKey = process.env.TENCENTCLOUD_SECRETKEY; const bucket = 'your-bucket-name-1250000000'; // 替换为你的存储桶名称和 APPID const region = 'ap-shanghai'; // 替换为你的存储桶所在地域 const cos = new COS({ SecretId: secretId, SecretKey: secretKey, }); /** * 云函数主入口 * @param {object} event - 云函数触发事件 * @param {object} context - 云函数上下文 */ exports.main = async (event, context) => { // 从事件中获取需要处理的图片信息,例如通过 HTTP 触发时 // const { imageUrl } = event; const sourceKey = 'path/to/source-image.jpg'; // 待处理的图片路径 const destinationKey = 'path/to/processed-image.jpg'; // 处理后图片保存的路径 try { // 1. 获取图片处理参数 // 万象图片处理的参数需要拼接在请求 URL 的后面 // 这里以裁剪为例,参数 d=500x500 表示将图片处理成 500x500 // 更多参数可以参考腾讯云万象文档: // https://cloud.tencent.com/document/product/460/36551 const ciProcessParams = `?imageMogr2/thumbnail/!500x500r/gravity/Center/crop/500x500`; // 2. 使用 COS SDK 的 getObject 方法获取处理后的图片 // 万象的图片处理能力实际上是作为 COS getObject 的一个参数来调用的 const res = await cos.getObject({ Bucket: bucket, Region: region, Key: sourceKey, Query: ciProcessParams }); // 3. 将处理后的图片上传到新的路径 const uploadRes = await cos.putObject({ Bucket: bucket, Region: region, Key: destinationKey, Body: res.Body, // getObject 返回的 Body 就是处理后的图片数据 ContentType: 'image/jpeg' }); console.log('图片处理成功,上传到:', destinationKey); return { success: true, processedUrl: `https://${bucket}.cos.${region}.myqcloud.com/${destinationKey}` }; } catch (err) { console.error('图片处理失败:', err); return { success: false, message: '图片处理失败' }; } };4. 部署与配置
index.js文件和package.json文件打包上传。或者使用 CloudBase CLI 工具进行部署,这样更便捷。TENCENTCLOUD_SECRETID和TENCENTCLOUD_SECRETKEY,并分别填入你的密钥。TencentCloudBaseSCFExecutionRole角色具有COS服务的相关权限,例如cos:GetObject和cos:PutObject。5. 总结
在云函数中调用腾讯云万象的图片处理,核心步骤是:
cos-nodejs-sdk-v5。cos.getObject方法,并在Query参数中拼接万象图片处理的参数。getObject返回的就是处理后的图片数据,你可以选择将其保存到本地、返回给前端或者再次上传到 COS。这种方式可以在服务端实现复杂的图片处理逻辑,减轻前端设备的压力,并利用云函数强大的计算能力和腾讯云万象的专业能力。