You need to enable JavaScript to run this app.
导航

基础图片处理(C++ SDK)

最近更新时间2024.03.21 15:13:15

首次发布时间2024.03.21 15:13:15

TOS 支持对存储的图片进行处理,包括图片缩放、图片裁剪、图片水印、格式转换等图片处理操作。本文介绍如何通过 TOS C++ SDK 进行基础图片处理。

注意事项

  • 原图格式仅支持 JPG、PNG、BMP、GIF、WEBP 和 TIFF。
  • 原图大小不能超过 20MB。
  • 原图宽、高不能超过 30000 px,总像素不能超过 2.5 亿 px(旋转操作的原图宽、高不能超过 4096 px)。
  • 缩放后的图片宽、高不能超过 16384 px,总像素不能超过 16777216 px。

示例代码

以下代码展示如何将图片高度固定为 100px,图片格式转换为 JPG 格式,然后将图片命名为 temp.jpg,并下载到本地。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";
    // 指定原图名称。如果图片不在Bucket根目录,需携带图片完整路径,例如exampledir/exampleobject.jpg。
    std::string objectName = "exampledir/exampleobject.jpg";
    // 下载Object到本地文件temp.jpg,并保存到指定的本地路径中,例如/localpath/temp.jpg,如果指定的本地文件存在会覆盖,不存在则新建。
    std::string filePath = "/localpath/temp.jpg";
    
    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);
    
    GetObjectToFileInput input(bucketName, objectName, filePath);
    std::string style = "image/resize,h_100/format,jpg";
    input.setProcess(style);
    auto output = client.getObjectToFile(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "GetObjectToFile failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }
    
    std::cout << "GetObjectToFile success. the object etag:" << output.result().getGetObjectBasicOutput().getETags()
              << std::endl;
    
    // 释放网络等资源
    CloseClient();
    return 0;
}

相关文档

关于图片处理的详细介绍,请参见图片处理概述