Object Storage Service (OSS) が提供する画像処理 (IMG) は、安全で費用対効果が高く、信頼性の高いサービスであり、多数の画像を処理するために使用できます。 OSSに画像をアップロードした後、RESTful APIを呼び出して、いつでもどこでもインターネットに接続されたデバイスから画像を処理できます。
使用上の注意
このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。
IMGの使用法
説明
IMGパラメータは、ダウンロードされたイメージデータにのみ適用され、ソースイメージには影響しません。 ソースイメージを処理済みイメージに置き換えるには、「処理済みイメージの保存」をご参照ください。
匿名アクセス
String url = oss.presignPublicObjectURL(testBucket、testObject); OSSLog.logDebug("signPublicURL" 、"get url: " + url); 生成されたURLにx-oss-process:operationパラメーターを追加します。この操作は、画像に対して実行する操作です。
許可されたアクセス
OSS SDKを使用してイメージを処理するには、イメージのダウンロード時に
request.setxOssProcess()
メソッドを呼び出してIMGパラメーターを指定します。 次のサンプルコードは、OSS SDK for Androidを使用してイメージを処理する方法の例を示しています。// イメージのダウンロード要求を作成します。 // バケットの名前とオブジェクトの完全パスを指定します。 この例では、バケット名はexamplebucketで、オブジェクトの完全パスはexampledir/exampleobject.txtです。 バケット名をフルパスに含めないでください。 GetObjectRequest request = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt"); // IMGパラメータを指定します。 request.setxOssProcess("image/resize,m_fixed,w_100,h_100"); OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() { @オーバーライド 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(); } } @オーバーライド public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) { // Handle exceptions. 独自のコードを追加できます。 } });
説明イメージに対して他の操作を実行するには、
request.setxOssProcess()
で指定されたパラメーターを置き換えます。OSS SDKを使用したアクセス
GetObjectRequest request = new GetObjectRequest("bucket-name", "image-name"); request.setxOssProcess("image/resize,m_lfit,w_100,h_100"); // IMGパラメーターを指定します。 OSSAsyncTask task = ossClient.asyncGetObject(request, getCallback);
処理された画像を保存する
次のサンプルコードは、処理されたイメージを保存する方法の例を示します。
// fromBucketはソースバケットの名前を指定し、toBucketは宛先バケットの名前を指定します。
// fromObjectKeyは、ソースオブジェクトの名前を指定します。 toObjectkeyは、宛先オブジェクトの名前を指定します。 ソースオブジェクトと宛先オブジェクトの名前は、イメージオブジェクト名のサフィックスを含む完全なパスでなければなりません。 例: abc/efg/123.jpg.
// actionは、前の例の "image/resize,m_lfit,w_100,h_100" のように、実行するIMGアクションを指定します。
ImagePersistRequest request = new ImagePersistRequest(fromBucket,fromObjectKey,toBucket,toObjectkey,action);
OSSAsyncTask task = oss.asyncImagePersist(request, new OSSCompletedCallback<ImagePersistRequest, ImagePersistResult>() {
@オーバーライド
public void onSuccess(ImagePersistRequestリクエスト, ImagePersistResult結果) {
// 成功コールバック
log.i("info" 、"Success");
}
@オーバーライド
public void onFailure(ImagePersistRequestリクエスト, 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());
}
}
});