OSS图片处理是OSS对外提供的海量、安全、低成本、高可靠的图片处理服务。 用户将原始图片上传保存到OSS,通过简单的 RESTful 接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。 图片处理提供图片处理接口,图片上传请使用上传接口。基于OSS图片处理,用户可以搭建自己的图片处理服务。

图片处理的详细信息请参见OSS图片处理指南

图片处理功能

OSS图片处理提供以下功能:

图片处理使用

图片处理使用标准的HTTP GET请求。您可以在URL的QueryString中设置处理参数。

如果图片文件的访问权限为私有读写,必须通过授权才能进行访问。

  • 匿名访问
    OSSTask * task = [_client presignPublicURLWithBucketName:_publicBucketName
    										  withObjectKey:@"hasky.jpeg"
    										 withParameters:@{@"x-oss-process": @"image/resize,w_50"}];
  • 授权访问

    SDK中使用图片处理时,只需要在下载图片时调用request.setxOssProcess()方法设置处理参数。示例如下:

    OSSGetObjectRequest * request = [OSSGetObjectRequest new];
    request.bucketName = @"<bucketName>";
    request.objectKey = @"example.jpg";
    // 图片处理
    request.xOssProcess = @"image/resize,m_lfit,w_100,h_100";
    OSSTask * getTask = [client getObject:request];
    [getTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"download image success!");
            OSSGetObjectResult * getResult = task.result;
            NSLog(@"download image data: %@", getResult.dowloadedData);
        } else {
            NSLog(@"download object failed, error: %@" ,task.error);
        }
        return nil;
    }];
    // [getTask waitUntilFinished];
    // [request cancel];
    说明 需要对图片进行其它处理,只需替换 request.setxOssProcess()的相关参数。
  • SDK 访问
    OSSGetObjectRequest * request = [OSSGetObjectRequest new];
    request.bucketName = @"bucket-name";    // 设置存储桶名称
    request.objectKey = @"image-name";      // 设置图片名称
    request.xOssProcess = @"image/resize,m_lfit,w_100,h_100";   // 设置图片处理
    OSSTask * task = [ossClient getObject:request];

图片处理持久化

以下代码用于图片处理持久化:

OSSImagePersistRequest *request = [OSSImagePersistRequest new];
request.fromBucket = _privateBucketName;
request.fromObject = OSS_IMAGE_KEY;
request.toBucket = _privateBucketName;
request.toObject = @"image_persist_key";   
request.action = @"image/resize,w_100";    // 图片处理效果
//request.action = @"resize,w_100";

[[[ossClient imageActionPersist:request] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
	
	return nil;
}] waitUntilFinished];