图片处理是OSS提供的海量、安全、低成本、高可靠的图片处理服务。原始图片上传到OSS后,您可以通过简单的RESTful接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。
使用方法
图片处理使用标准的HTTP GET请求。您可以在URL的QueryString中设置处理参数。
如果图片文件的访问权限为私有读写,必须通过授权才能进行访问。
匿名访问
OSSTask * task = [client presignPublicURLWithBucketName:@"examplebucket" withObjectKey:@"exampledir/example.jpg" withParameters:@{@"x-oss-process": @"image/resize,w_50"}]; [task continueWithBlock:^id(OSSTask *task) { if (!task.error) { NSLog(@"download image success!"); OSSGetObjectResult * getResult = task.result; NSLog(@"download image data: %@", getResult.downloadedData); } else { NSLog(@"download object failed, error: %@" ,task.error); } return nil; }]; // [task waitUntilFinished];
授权访问
SDK中使用图片处理时,只需要在下载图片时调用
request.xOssProcess()
方法设置处理参数。示例如下:OSSGetObjectRequest * request = [OSSGetObjectRequest new]; // 填写图片所在Bucket的名称。 request.bucketName = @"examplebucket"; // 填写图片名称。如果图片不在Bucket根目录,需携带文件完整路径,例如exampledir/example.jpg。 request.objectKey = @"exampledir/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.downloadedData); } else { NSLog(@"download object failed, error: %@" ,task.error); } return nil; }]; // [getTask waitUntilFinished]; // [request cancel];
图片处理持久化
以下代码用于图片处理持久化:
OSSImagePersistRequest *request = [OSSImagePersistRequest new];
// 填写原图所在Bucket的名称。
request.fromBucket = @"srcbucket";
// 填写原图名称。如果图片不在Bucket根目录,需携带文件完整路径,例如exampledir/src.jpg。
request.fromObject = @"exampledir/src.jpg";
// 填写处理后图片存放的Bucket名称,该Bucket需与源Bucket在相同地域。
request.toBucket = @"destbucket";
// 填写处理后的图片名称.
request.toObject = @"exampledir/dest.jpg";
// 将图片按比例缩放至宽100 px后转存到指定Bucket。
request.action = @"image/resize,w_100";
// request.action = @"resize,w_100";
OSSTask * getTask = [client imageActionPersist:request];
[getTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
return nil;
}];
// [getTask waitUntilFinished];
生成带图片处理参数的文件签名URL
私有文件的访问URL带有签名。OSS不支持在带签名的URL后直接添加图片处理参数。如果您想要对私有文件进行图片处理,需要将图片处理参数加入到签名中。
以下代码用于生成带图片处理参数的文件签名URL:
// 填写图片所在Bucket的名称。
NSString *bucketName = @"examplebucket";
// 填写图片名称。如果图片不在Bucket根目录,需携带文件完整路径,例如exampledir/example.jpg。
NSString *objectKey = @"exampledir/example.jpg";
// 生成带签名的URL,并指定过期时间为1800s。
OSSTask *task = [_client presignConstrainURLWithBucketName:bucketName withObjectKey:objectKey withExpirationInterval:30 * 60 withParameters:@{@"x-oss-process": @"image/resize,w_50"}];
NSLog(@"url: %@", task.result);
相关文档
关于图片处理支持的参数说明,请参见处理参数。