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プロパティに IMG パラメーターを設定します。次のコードに例を示します。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 = @"image/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 パラメータ」をご参照ください。