圖片處理是OSS提供的海量、安全、低成本、高可靠的圖片處理服務。原始圖片上傳到OSS後,您可以通過簡單的RESTful介面,在任何時間、任何地點、任何互連網裝置上對圖片進行處理。
使用方法
圖片處理使用標準的HTTP GET請求。您可以在URL的QueryString中設定處理參數。
如果圖片檔案的存取權限為私人讀寫,必須通過授權才能進行訪問。
匿名訪問
OSSTask * task = [client presignPublicURLWithBucketName:@"examplebucket" withObjectKey:@"exampledir/example.jpg" withParameters:@{@"x-oss-process": @"image/resize,w_50"}]; [task continueWithBlock:^id(OSSTask *task) { if (!task.error) { NSLog(@"download image success!"); OSSGetObjectResult * getResult = task.result; NSLog(@"download image data: %@", getResult.downloadedData); } else { NSLog(@"download object failed, error: %@" ,task.error); } return nil; }]; // [task waitUntilFinished];
授權訪問
SDK中使用圖片處理時,只需要在下載圖片時調用
request.xOssProcess()
方法設定處理參數。樣本如下:OSSGetObjectRequest * request = [OSSGetObjectRequest new]; // 填寫圖片所在Bucket的名稱。 request.bucketName = @"examplebucket"; // 填寫圖片名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整路徑,例如exampledir/example.jpg。 request.objectKey = @"exampledir/example.jpg"; // 圖片處理。 request.xOssProcess = @"image/resize,m_lfit,w_100,h_100"; OSSTask * getTask = [client getObject:request]; [getTask continueWithBlock:^id(OSSTask *task) { if (!task.error) { NSLog(@"download image success!"); OSSGetObjectResult * getResult = task.result; NSLog(@"download image data: %@", getResult.downloadedData); } else { NSLog(@"download object failed, error: %@" ,task.error); } return nil; }]; // [getTask waitUntilFinished]; // [request cancel];
圖片處理持久化
以下代碼用於圖片處理持久化:
OSSImagePersistRequest *request = [OSSImagePersistRequest new];
// 填寫原圖所在Bucket的名稱。
request.fromBucket = @"srcbucket";
// 填寫原圖名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整路徑,例如exampledir/src.jpg。
request.fromObject = @"exampledir/src.jpg";
// 填寫處理後圖片存放的Bucket名稱,該Bucket需與源Bucket在相同地區。
request.toBucket = @"destbucket";
// 填寫處理後的圖片名稱.
request.toObject = @"exampledir/dest.jpg";
// 將圖片按比例縮放至寬100 px後轉存到指定Bucket。
request.action = @"image/resize,w_100";
// request.action = @"resize,w_100";
OSSTask * getTask = [client imageActionPersist:request];
[getTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
return nil;
}];
// [getTask waitUntilFinished];
產生帶圖片處理參數的檔案簽名URL
私人檔案的訪問URL帶有簽名。OSS不支援在帶簽名的URL後直接添加圖片處理參數。如果您想要對私人檔案進行圖片處理,需要將圖片處理參數加入到簽名中。
以下代碼用於產生帶圖片處理參數的檔案簽名URL:
// 填寫圖片所在Bucket的名稱。
NSString *bucketName = @"examplebucket";
// 填寫圖片名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整路徑,例如exampledir/example.jpg。
NSString *objectKey = @"exampledir/example.jpg";
// 產生帶簽名的URL,並指定到期時間為1800s。
OSSTask *task = [_client presignConstrainURLWithBucketName:bucketName withObjectKey:objectKey withExpirationInterval:30 * 60 withParameters:@{@"x-oss-process": @"image/resize,w_50"}];
NSLog(@"url: %@", task.result);
相關文檔
關於圖片處理支援的參數說明,請參見處理參數。