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

:画像処理

最終更新日:Feb 21, 2024

このトピックでは、OssDemoを使用してアップロードされた画像に透かし、サイズ変更、トリミングを行う方法について説明します。

透かし画像

  • 処理ロジック
    1. デフォルトでは、バケット名はsdk-demo、オブジェクト名はtest、イメージをobject Storage Service (OSS) にアップロードするときにOSSエンドポイントがoss-cn-hangzhou.aliyuncs.comされます。
    2. 異なるIMGメソッドに基づいて、異なる画像処理 (IMG) パラメータをテストの最後に追加して、異なる効果を表示できます。
    3. OssDemoはsts_serverのアドレスを取得した後にリクエストを送信します。
    4. sts_serverは、AccessKeyId、AccessKeySecret、SecurityToken、およびExpirationを返します。
    5. 情報を取得した後、OssDemoはOSS SDKを呼び出してOSSClientインスタンスを作成し、オブジェクトをダウンロードします。 得られた画像は、IMGによって処理されている。 IMGのエンドポイントをimg-cn-hangzhou.aliyuncs.comする。
  • コード分析
    1. [詳細] をクリックします。 画像処理ページが表示されます。
    2. コマンドを取得して、アップロードした画像の右下隅に透かし (100ピクセル × 100ピクセル) を追加します。

      関数実装のコードセグメント:

      ImageServiceクラスの
       このメソッドは、対応する機能を実行するために必要なパラメータを元のオブジェクト名に追加するために提供されます。
       // 透かし画像。 サイズとフォント以外の他のパラメータのデフォルト値を保持します。 他のパラメーターを変更する方法の詳細については、IMGドキュメントを参照してください。
       public String textWatermark(String object, String text, int size) {
           String base64Text = Base64.encodeToString(text.getBytes() 、Base64.URL_SAFE | Base64.NO_WRAP);
           String queryString = "@watermark=2&type=" + font + "&text=" + base64Text + "&size=" + String.valueOf(size);
           Log.d("TextWatermark", object);
           Log.d("Text", text);
           Log.d("QuerySyring", queryString);
           return (object + queryString);
       }
    3. OSS SDKのダウンロード操作を呼び出して、イメージを処理します。

      関数実装のコードセグメント:

      getImage(imageService.textWatermark(objectName、"OSS test" 、100) 、0、"右下隅のテキスト透かし100 px × 100 px");
       public void getImage(final String object, final Integer index, final String method) {
           GetObjectRequest get = new GetObjectRequest(bucket, object);
           Log.d("Object", object);
           OSSAsyncTask task = oss.asyncGetObject(get, new UICallback<GetObjectRequest, GetObjectResult>(uiDispatcher) {
               @オーバーライド
               public void onSuccess(GetObjectRequest request, GetObjectResult result) {
                   // オブジェクトがダウンロードされます。
                   InputStream inputStream = result.getObjectContent();
                   Log.d("GetImage", object);
                   Log.d("Index", String.valueOf(index));
                   try {
                       // イメージを表示する最大寸法を設定します。
                       adapter.getImgMap().put(index, new ImageDisplayer(1000, 1000).autoResizeFromStream(inputStream));
                       adapter.getTextMap().put(index, method + "\n" + object);
                       // 対応するビューのサイズに基づいて画像のサイズを自動的に変更します。
                       addCallback(new Runnable() {
                           @オーバーライド
                           public void run() {
                               adapter.notifyDataSetChanged();
                           }
                       }, null);
                   }
                   catch (IOException e) {
                       e.printStackTrace();
                   }
                   super.onSuccess(request,result);
               }

      ダウンロード失敗の処理はここでは省略する。 詳細については、ソースコードの「onFailure」をご参照ください。

画像のサイズ変更、トリミング、回転

透かしを追加するのと同じ方法で、処理コマンドの取得に使用する関数をImageServiceに追加します。 応答は、オブジェクト + 処理パラメータの形式である。 GetObject操作を呼び出して、イメージを処理します。

// 画像のサイズを変更します。
getImage(imageService.resize(objectName, 100, 100), 1, "resize,h_100,w_100");
// 画像をトリミングします。
getImage(imageService.crop(objectName、100、100、9) 、2、"クロップ右下隅、px 100 × px 100");
// 画像を回転します。
getImage(imageService.rotate(objectName, 90), 3, "rotate,90");