全部產品
Search
文件中心

Object Storage Service:Android圖片處理

更新時間:Jun 19, 2024

圖片處理是OSS提供的海量、安全、低成本、高可靠的圖片處理服務。原始圖片上傳到OSS後,您可以通過簡單的RESTful介面,在任何時間、任何地點、任何互連網裝置上對圖片進行處理。

注意事項

圖片處理使用

說明

這裡圖片處理後只會應用於“// 處理下載的資料”處的使用方式,並不會改變OSS的原檔案,如需使用處理後的圖片檔案替換原檔案,請參考圖片處理持久化

  • 匿名訪問

    String url = oss.presignPublicObjectURL(testBucket, testObject);
            OSSLog.logDebug("signPublicURL", "get url: " + url);
    然後對產生的url追加x-oss-process:operation 的參數,operation代表的是圖片處理操作
  • 授權訪問

    SDK中使用圖片處理時,只需要在下載圖片時調用request.setxOssProcess()方法設定處理參數。樣本如下:

    // 構造圖片下載請求。
    // 依次填寫Bucket名稱(例如examplebucket)和Object完整路徑(例如exampledir/exampleobject.txt)。Object完整路徑中不能包含Bucket名稱。
    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()的相關參數。

  • 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分別表示源Bucket和目的Bucket名稱。
// fromObjectKey和toObjectkey分別表示源Object和目標Object名稱,其填寫格式為指定包含檔案尾碼在內的完整路徑,例如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) {
                // sucess callback
                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());
              }
            }
        });

相關文檔