本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

iOS圖片處理

更新時間:2024-08-27 10:55

圖片處理是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);

相關文檔

關於圖片處理支援的參數說明,請參見處理參數

  • 本頁導讀 (1, M)
  • 使用方法
  • 圖片處理持久化
  • 產生帶圖片處理參數的檔案簽名URL
  • 相關文檔
文檔反饋