Object Storage Service (OSS) が提供するイメージプロセス (IMG) は、安全でコスト効率が高く、信頼性の高いサービスで、大量のイメージを処理するために使用できます。イメージを OSS にアップロードした後、インターネットに接続されたデバイスからいつでもどこでも RESTful API 操作を呼び出して、イメージを処理できます。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名やセキュリティトークンサービス (STS) などの方法を使用して OSSClient インスタンスを作成する必要があります。詳細については、「初期化 (Android SDK)」をご参照ください。
IMG の使用方法
IMG パラメーターはダウンロードされたイメージデータにのみ適用され、ソースイメージには影響しません。処理済みのイメージでソースイメージを置き換えるには、「処理済みイメージの保存」をご参照ください。
匿名アクセス
String url = oss.presignPublicObjectURL(testBucket, testObject); OSSLog.logDebug("signPublicURL", "get url: " + url); // 生成された URL に x-oss-process:operation パラメーターを追加します。 // operation パラメーターは、イメージ処理の操作を指定します。承認済みアクセス
ソフトウェア開発キット (SDK) を使用してイメージを処理する場合、イメージのダウンロード中に
request.setxOssProcess()メソッドを呼び出して、処理パラメーターを設定できます。次のコードに例を示します。// イメージのダウンロードリクエストを作成します。 // バケット名 (例: examplebucket) とオブジェクトの完全なパス (例: exampledir/exampleobject.txt) を指定します。オブジェクトの完全なパスにバケット名を含めることはできません。 GetObjectRequest request = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt"); // イメージを処理します。 request.setxOssProcess("image/resize,m_fixed,w_100,h_100"); OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() { @Override public void onSuccess(GetObjectRequest request, GetObjectResult result) { // リクエストは成功しました。 InputStream inputStream = result.getObjectContent(); byte[] buffer = new byte[2048]; int len; try { while ((len = inputStream.read(buffer)) != -1) { // ダウンロードしたデータを処理します。 } } catch (IOException e) { e.printStackTrace(); } } @Override public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) { // 必要に応じて例外を処理します。 } });説明イメージに対して他の操作を実行するには、
request.setxOssProcess()のパラメーターを置き換えます。OSS SDK を使用したアクセス
GetObjectRequest request = new GetObjectRequest("bucket-name", "image-name"); request.setxOssProcess("image/resize,m_lfit,w_100,h_100"); // イメージ処理パラメーターを設定します。 OSSAsyncTask task = ossClient.asyncGetObject(request, getCallback);
処理済みイメージの保存
次のサンプルコードは、処理済みイメージを保存する方法の例を示しています。
// fromBucket と toBucket は、ソースバケットと宛先バケットの名前を指定します。
// fromObjectKey と toObjectKey は、ソースオブジェクトと宛先オブジェクトの名前を指定します。ファイル拡張子を含む完全なパス (例: abc/efg/123.jpg) を指定します。
// action は、上記の例の "image/resize,m_lfit,w_100,h_100" などのイメージ処理操作を指定します。
ImagePersistRequest request = new ImagePersistRequest(fromBucket,fromObjectKey,toBucket,toObjectkey,action);
OSSAsyncTask task = oss.asyncImagePersist(request, new OSSCompletedCallback<ImagePersistRequest, ImagePersistResult>() {
@Override
public void onSuccess(ImagePersistRequest request, ImagePersistResult result) {
// 成功コールバック
log.i("info", "Success");
}
@Override
public void onFailure(ImagePersistRequest request, ClientException clientException, ServiceException serviceException) {
// リクエストは失敗しました。
if (clientException != null) {
// ネットワーク例外などのクライアント例外が発生しました。
clientException.printStackTrace();
}
if (serviceException != null) {
// サーバー例外が発生しました。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});関連ドキュメント
サポートされている IMG パラメーターの詳細については、「IMG パラメーター」をご参照ください。
IMG 操作を実行するために使用される完全なサンプルコードについては、GitHub をご参照ください。
OSSClient インスタンスを初期化する方法の詳細については、「初期化」をご参照ください。