圖片處理是OSS提供的海量、安全、低成本、高可靠的圖片處理服務。原始圖片上傳到OSS后,您可以通過簡單的RESTful接口,在任何時間、任何地點、任何互聯網設備上對圖片進行處理。
注意事項
使用本文示例前您需要先通過自定義域名、STS等方式新建OSSClient,具體請參見如何初始化Android端OSSClient實例。
圖片處理使用
說明
這里圖片處理后只會應用于“// 處理下載的數據”處的使用方式,并不會改變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());
}
}
});
圖片處理工具
您可以通過可視化圖片處理工具 ImageStyleViewer直觀地看到OSS圖片處理結果。
相關文檔
關于圖片處理支持的參數說明,請參見處理參數。
關于圖片處理的完整示例代碼,請參見GitHub示例。
關于初始化OSSClient,請參見如何初始化Android端OSSClient實例。
文檔內容是否對您有幫助?