有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

简介

本文档提供关于图片压缩接口的相关的 API 概览以及 SDK 示例代码。
API
操作描述
将图片转换为 webp 格式,压缩图片体积
将图片转换为 heif 格式,压缩图片体积
将图片转换为 tpg 格式,压缩图片体积
将图片转换为 avif 格式,压缩图片体积
压缩 SVG 图片体积

上传时使用图片压缩

下面示例展示了如何在上传图片时自动实现图片压缩。
图片上传完成后,COS 会存储原始图片和已压缩过的图片。后续用户可以通过普通的下载请求获取处理结果。

示例代码

var config = {
// 需要替换成您自己的存储桶信息
Bucket: 'examplebucket-1250000000', /* 存储桶,必须 */
Region: 'COS_REGION', /* 存储桶所在地域,必须字段 */
};
var filename = 'example_photo.png'
var filepath = path.resolve(__dirname, filename);
cos.putObject({
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: filename,
Body: fs.readFileSync(filepath),
Headers: {
// 通过 imageMogr2 接口进行 avif 压缩,可以根据需要压缩的类型填入不同的压缩格式:webp/heif/tpg/avif/svgc
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.avif", "rule": "imageMogr2/format/webp"}]}',
},
onTaskReady: function (tid) {
TaskId = tid;
},
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
},
}, function (err, data) {
console.log(err || data);
});



对云上数据进行图片压缩

下面示例展示了如何在对已存储在 COS 的图片进行相应压缩操作,并将结果存入到 COS。

示例代码

var config = {
// 需要替换成您自己的存储桶信息
Bucket: 'examplebucket-1250000000', /* 存储桶,必须 */
Region: 'COS_REGION', /* 存储桶所在地域,必须字段 */
};
var filename = 'example_photo.png';
cos.request({
Bucket: config.Bucket,
Region: config.Region,
Key: filename,
Method: 'POST',
Action: 'image_process',
Headers: {
// 通过 imageMogr2 接口进行 avif 压缩,可以根据需要压缩的类型填入不同的压缩格式:webp/heif/tpg/avif/svgc
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.avif", "rule": "imageMogr2/format/avif"}]}',
},
}, function (err, data) {
console.log(err || data);
});

下载时使用图片压缩

下面示例展示了如何在下载图片时实现图片压缩。

示例代码

var config = {
// 需要替换成您自己的存储桶信息
Bucket: 'examplebucket-1250000000', /* 存储桶,必须 */
Region: 'COS_REGION', /* 存储桶所在地域,必须字段 */
};
var filepath = path.resolve(__dirname, 'example_photo_ci_result.avif');
cos.getObject({
Bucket: config.Bucket,
Region: config.Region,
Key: 'example_photo.png',
QueryString: `imageMogr2/format/avif`, // 可以根据需要压缩的类型填入不同的压缩格式:webp/heif/tpg/avif/svgc
},
function (err, data) {
if(data){
fs.writeFileSync(filepath, data.Body);
} else {
console.log(err);
}
},
);
说明:
腾讯云数据万象提供集成 TPG、AVIF 解码器的 iOSAndroidWindows 终端 SDK,您只需在您的客户端进行集成,即可实现对 TPG 和 AVIF 的解码预览。