Object Storage Service (OSS) が提供するイメージプロセシング (IMG) は、安全でコスト効率が高く、信頼性の高いサービスで、大量のイメージを処理するために使用できます。イメージを OSS にアップロードした後、インターネットに接続されたデバイスからいつでもどこでも RESTful API 操作を呼び出して、イメージを処理できます。
使用方法
標準の HTTP GET リクエストを使用して IMG にアクセスできます。イメージオブジェクト URL のクエリ文字列で IMG パラメーターを設定できます。
イメージオブジェクトのアクセス制御リスト (ACL) が非公開の場合、権限のあるユーザーのみがそのオブジェクトにアクセスできます。
匿名アクセス
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]; // イメージが格納されているバケットの名前を指定します。 request.bucketName = @"examplebucket"; // イメージの名前を指定します。イメージがバケットのルートディレクトリに格納されていない場合は、イメージの完全なパスを指定する必要があります。例:exampledir/example.jpg。 request.objectKey = @"exampledir/example.jpg"; // IMG パラメーターを指定します。 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];
// ソースイメージが格納されているバケットの名前を指定します。
request.fromBucket = @"srcbucket";
// ソースイメージの名前を指定します。イメージがバケットのルートディレクトリに格納されていない場合は、イメージの完全なパスを指定する必要があります。例:exampledir/src.jpg。
request.fromObject = @"exampledir/src.jpg";
// 処理済みイメージを格納するバケットの名前を指定します。このバケットは、ソースイメージが格納されているバケットと同じリージョンにある必要があります。
request.toBucket = @"destbucket";
// 処理済みイメージの名前を指定します。
request.toObject = @"exampledir/dest.jpg";
// イメージを幅 100 ピクセルに比例してサイズ変更し、処理済みイメージを指定されたバケットに保存します。
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];IMG パラメーターを含む署名付きオブジェクト URL の生成
非公開オブジェクトの URL は署名する必要があります。IMG パラメーターを署名付き URL の末尾に直接追加することはできません。非公開のイメージオブジェクトを処理する場合は、署名に IMG パラメーターを追加する必要があります。
次のサンプルコードは、IMG パラメーターを含む署名付き URL を生成する方法の例です。
// イメージが格納されているバケットの名前を指定します。
NSString *bucketName = @"examplebucket";
// イメージの名前を指定します。イメージがバケットのルートディレクトリに格納されていない場合は、イメージの完全なパスを指定する必要があります。例:exampledir/example.jpg。
NSString *objectKey = @"exampledir/example.jpg";
// IMG パラメーターを含む署名付き URL を生成します。署名付き URL の有効期間を 1,800 秒に設定します。
OSSTask *task = [_client presignConstrainURLWithBucketName:bucketName withObjectKey:objectKey withExpirationInterval:30 * 60 withParameters:@{@"x-oss-process": @"image/resize,w_50"}];
NSLog(@"url: %@", task.result);関連ドキュメント
サポートされている IMG パラメーターの詳細については、「IMG パラメーター」をご参照ください。