简介
COS SDK 提供了一套便捷的图片处理机制,通过这套机制可以对存储桶中的图片进行一系列的图片处理操作。
图片处理机制分为以下两种方式:
下载时处理
// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucketlet bucket = "examplebucket-1250000000";//对象在存储桶中的位置标识符,即称对象键let cosPath = "test.png";//本地文件下载路径,如果文件不存在sdk会自动创建let downliadPath = "本地文件路径";let getRequest = new GetObjectRequest(bucket, cosPath, downliadPath);// 添加图片处理参数getRequest.addQuery("imageMogr2/rotate/70"); let task: DownloadTask = CosXmlBaseService.default().download(getRequest); task.onResult = {// 下载成功回调 onSuccess: (request, result: CosXmlDownloadTaskResult) => { // todo 下载成功后的逻辑 },//下载失败回调 onFail: (request, error: CosError) => { // todo 下载失败后的逻辑 } }//开始下载 task.start();
上传时处理
上传时处理功能可以帮助使用者在上传时实现图片处理。您只需要在请求通过 request 的 setPicOperations 方法设置好相应的 图片处理参数,就可在图片上传时实现相应的图片处理,并可将原图和处理结果存入到 COS。
// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucketlet bucket = "examplebucket-1250000000";//对象在存储桶中的位置标识符,即称对象键let cosPath = "test.png";//本地文件路径let srcPath = "本地文件路径";let putRequest = new PutObjectRequest(bucket, cosPath, srcPath);// 设置图片处理参数let picOperations: PicOperations = new PicOperations(); picOperations.is_pic_info = 1; picOperations.rules.push(new PicOperationRule("image_ci.jpg", "imageMogr2/format/jpg")) picOperations.rules.push(new PicOperationRule("image_ci_rotate.jpg", "imageMogr2/rotate/70", "ci-auditing-sample-1253960454")) putRequest.setPicOperations(picOperations);let task: UploadTask = CosXmlBaseService.default().upload(putRequest); task.onResult = {// 上传成功回调 onSuccess: (request, result: CosXmlUploadTaskResult) => {// result中picUploadResult参数包含了原图以及图片处理参数的内容 // todo 上传成功后的逻辑 },//上传失败回调 onFail: (request, error: CosError) => { // todo 上传失败后的逻辑 } }//开始上传 task.start();
PicOperations 用于设置图片处理参数,其主要成员说明如下:
参数名称 | 类型 | 是否必选 | 描述 |
is_pic_info | Int | 否 | 是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0 |
rules | Array | 否 | 处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理 |
rules 中每一项具体参数如下:
参数名称 | 类型 | 是否必选 | 描述 |
bucket | String | 否 | 存储结果的目标存储桶名称,格式为 BucketName-APPID,如果不指定的话默认保存到当前存储桶。 |
fileid | String | 是 | 处理后文件的保存路径及名称。 当 fileid 与 ObjectKey 相同时,处理后的文件将覆盖原文件存储;不相同时将分别存储原文件和处理后文件。名称规则说明:1. 名称需要经过URLEncode。 2. 以 / 开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。 3. 不以 / 开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在 p1 文件夹中新建了一个 p2 文件夹,然后在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。 4. 注意:请不要以 / 结尾,否则会产生空文件名。 |
rule | String | 是 |
PicUploadResult 包含了原图以及图片处理结果的内容,其主要成员说明如下:
参数名称 | 类型 | 描述 |
originalInfo | PicOriginalInfo | 原图信息 |
processResults | List<PicObject> | 图片处理结果 |
PicOriginalInfo 节点内容:
节点名称 | 类型 | 描述 |
key | String | 原图文件名 |
location | String | 图片路径 |
imageInfo | ImageInfo | 原图图片信息 |
eTag | String | 原图 ETag 信息(若处理结果图覆盖原图则为结果图 ETag 信息) |
ImageInfo 节点内容:
节点名称 | 类型 | 描述 |
format | String | 格式 |
width | number | 图片宽度 |
height | number | 图片高度 |
quality | number | 图片质量 |
ave | String | 图片主色调,格式为:0xRRGGBB (RR、GG、BB都是十六进制数,表示红、绿、蓝三种颜色) |
orientation | number | 图片旋转角度,取值为1-8的整数: 1:旋转0° 2:水平翻转 3:旋转180° 4:垂直翻转 5:顺时针旋转90°+水平翻转 6:顺时针旋转90° 7:顺时针旋转90°+垂直翻转 8:逆时针旋转90° |
frameCount | number | 图片的帧数。静态图为1,动图为对应的帧数。 |
PicObject 节点内容:
节点名称 | 类型 | 描述 |
key | String | 文件名 |
location | String | 图片路径 |
format | String | 图片格式 |
width | number | 图片宽度 |
height | number | 图片高度 |
size | number | 图片大小 |
quality | number | 图片质量 |
eTag | String | 处理结果图 ETag 信息 |
frameCount | number | 图片的帧数。静态图为1,动图为对应的帧数 |