图片格式压缩

最近更新时间:2024-05-31 16:49:02

我的收藏

简介

本文档提供关于图片压缩接口的相关的 API 概览以及 SDK 示例代码。
注意:
COS Node.js SDK 版本需要大于等于 v2.12.6。
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 解码器的 iOSAndroid 终端 SDK,您只需在您的客户端进行集成,即可实现对 TPG 和 AVIF 的解码预览。