すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:画像処理 (Android SDK)

最終更新日:Mar 20, 2026

OSS の画像処理 (IMG) を使用すると、ソースオブジェクトを変更することなく、OSS に保存されている画像のサイズ変更、クロップ、回転、変換ができます。処理はダウンロード時に実行されます。リクエストに x-oss-process パラメーターをアタッチすると、OSS は変換された画像を返します。

前提条件

開始する前に、以下を確認してください:

  • 初期化済みの OSSClient インスタンス。カスタムドメイン名や Security Token Service (STS) などの設定オプションについては、「初期化」をご参照ください。

  • OSS バケットにアップロードされた画像オブジェクト

仕組み

3つのアクセス方法はすべて同じパターンに従います。ダウンロードリクエストに x-oss-process:<operation> をアタッチします。操作文字列は、適用する変換を指定します。

たとえば、image/resize,m_fixed,w_100,h_100 は、画像を 100×100 ピクセルに正確にサイズ変更します。別の変換を適用するには、この文字列を対応する IMG パラメーターに置き換えます。完全なリストについては、「IMG パラメーター」をご参照ください。

説明

IMG パラメーターは、ダウンロードされた画像データにのみ適用されます。OSS のソースオブジェクトは変更されません。処理済みの画像を新しいオブジェクトとして保存する方法については、「処理済み画像の保存」をご参照ください。

画像処理の適用

ユースケースに合ったアクセス方法を選択してください:

メソッド使用シーン
権限付きアクセスAndroid SDK を使用した署名付きダウンロードリクエスト — 最も一般的なアプローチ
OSS SDK を使用したアクセス最小限の設定で SDK をシンプルに使用
匿名アクセス署名を必要としないパブリック読み取り可能なオブジェクト

権限付きアクセス

request.setxOssProcess() を呼び出して、署名付きダウンロードリクエストに処理パラメーターをアタッチします。

// ダウンロードリクエストを作成します。
// "examplebucket" をご使用のバケット名に置き換えます。
// "exampledir/exampleobject.jpg" を完全なオブジェクトパス (バケット名を除く) に置き換えます。
GetObjectRequest request = new GetObjectRequest("examplebucket", "exampledir/exampleobject.jpg");

// 画像処理パラメーターをアタッチします。
// 値を適用したい IMG 操作に置き換えます。
request.setxOssProcess("image/resize,m_fixed,w_100,h_100");

OSSAsyncTask task = oss.asyncGetObject(request, 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 clientException, ServiceException serviceException) {
        // 必要に応じて例外を処理します。
    }
});

別の変換を適用するには、setxOssProcess() に渡す値を置き換えます。たとえば、画像を 90 度回転させるには、"image/rotate,90" を使用します。

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);

匿名アクセス

パブリック読み取り可能なオブジェクトの場合、presignPublicObjectURL() で URL を生成し、クエリパラメーターとして x-oss-process:<operation> を追加します。

String url = oss.presignPublicObjectURL(testBucket, testObject);
OSSLog.logDebug("signPublicURL", "get url: " + url);
// URL に x-oss-process を追加します。
// 例: url + "?x-oss-process=image/resize,m_fixed,w_100,h_100"

処理済み画像の保存

処理済みの画像を OSS の新しいオブジェクトとして永続化するには、ImagePersistRequestasyncImagePersist() を使用します。

以下のパラメーターが必要です:

パラメーター説明
fromBucketソースバケット名my-source-bucket
fromObjectKeyソースオブジェクトの完全なパス (ファイル拡張子を含む)photos/sample.jpg
toBucket宛先バケット名my-output-bucket
toObjectKey宛先オブジェクトの完全なパス (ファイル拡張子を含む)processed/sample-resized.jpg
action適用する IMG 操作文字列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());
        }
    }
});

次のステップ