阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

圖片處理

更新時間: Oct 19, 2018

OSS圖片處理,是OSS對外提供的海量、安全、低成本、高可靠的圖片處理服務。使用者將原始圖片上傳保存到OSS,通過簡單的 RESTful 介面,在任何時間、任何地點、任何互連網裝置上對圖片進行處理。圖片處理提供圖片處理介面,圖片上傳請使用上傳介面。基於OSS圖片處理,使用者可以搭建自己的圖片處理服務。

圖片處理基礎功能

OSS圖片處理提供以下功能:

圖片處理使用

圖片處理使用標準的 HTTP GET 請求來訪問,所有的處理參數是編碼在 URL 中的QueyString。

匿名訪問

如果圖片檔案(Object)的存取權限是 公共讀 ,如下表所示的許可權,則可以匿名訪問圖片服務。

Bucket許可權 Object許可權
公共讀私有寫(public-read)或
公共讀寫(public-read-write)
預設(default)
任意許可權 公共讀私有寫(public-read)或
公共讀寫(public-read-write)

通過如下格式的第三層網域名匿名訪問圖片處理:

  1. http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value
  • bucket:使用者的儲存空間(bucket)名稱
  • endpoint:使用者儲存空間所在資料中心的訪問網域名稱
  • object:使用者上傳在OSS上的圖片檔案
  • image:圖片處理保留標誌符
  • action:使用者對圖片做的操作,如縮放、裁剪、旋轉等
  • parame:使用者對圖片做的操作所對應的參數

例如:

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100

自訂樣式,使用如下格式的第三層網域名匿名訪問圖片處理:

  1. http://bucket.<endpoint>/object?x-oss-process=x-oss-process=style/name
  • style:使用者自訂樣式系統保留標誌符
  • name:自訂樣式名稱,即控制台定義樣式的 規則名

例如:

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/oss-pic-style-w-100

通過級聯處理,可以對一張圖片順序實施多個操作,格式如下:

  1. http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value/action,parame_value/...

例如:

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100/rotate,90

圖片服務也支援HTTPS訪問,例如:

  1. https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100

授權訪問

對私有許可權的檔案(Object),如下表所示的許可權,必須通過授權才能訪問圖片服務。

Bucket許可權 Object許可權
私有讀寫(private) 預設許可權(default)
任意許可權 私有讀寫(private)

生成帶簽名的圖片處理的URL代碼如下:

  1. aos_pool_t *p;
  2. oss_request_options_t *options;
  3. aos_http_request_t *req;
  4. char *url_str;
  5. aos_table_t *params = NULL;
  6. aos_string_t bucket;
  7. aos_string_t object;
  8. apr_time_t now;
  9. int64_t expire_time;
  10. aos_pool_create(&p, NULL);
  11. /* 建立並初始化options */
  12. options = oss_request_options_create(p);
  13. init_sample_request_options(options, AOS_FALSE);
  14. /* 初始化參數 */
  15. aos_str_set(&bucket, "<您的bucket名字>");
  16. aos_str_set(&object, "<您的object名字>");
  17. /* 圖片處理 */
  18. params = aos_table_make(p, 1);
  19. apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
  20. req = aos_http_request_create(p);
  21. req->method = HTTP_GET;
  22. req->query_params = params;
  23. /* 過期時間,單位秒 */
  24. now = apr_time_now();
  25. expire_time = now / 1000000 + 10 * 60;
  26. /* 生成簽名url */
  27. url_str = oss_gen_signed_url(options, &bucket, &object, expire_time, req);
  28. printf("url:%s\n", url_str);
  29. aos_pool_destroy(p);

提示:

  • 授權訪問支援 自訂樣式HTTPS級聯處理
  • oss_gen_signed_url 過期時間單位是

SDK訪問

對於任意許可權的圖片檔案,都可以直接使用 SDK 訪問圖片、進行處理。

提示:

  • 圖片處理的完整代碼請參考:GitHub
  • SDK處理圖片檔案支援 自訂樣式HTTPS級聯處理

基礎操作

圖片處理的基礎操作包括,獲取圖片資訊格式轉換縮放裁剪旋轉效果浮水印等。

  1. aos_pool_t *p = NULL;
  2. aos_string_t bucket;
  3. aos_string_t object;
  4. oss_request_options_t *options = NULL;
  5. aos_table_t *headers = NULL;
  6. aos_table_t *params = NULL;
  7. aos_table_t *resp_headers = NULL;
  8. aos_status_t *s = NULL;
  9. aos_string_t filename;
  10. char *style = NULL;
  11. aos_pool_create(&p, NULL);
  12. options = oss_request_options_create(p);
  13. init_sample_request_options(options, AOS_FALSE);
  14. aos_str_set(&bucket, "<您的bucket名字>");
  15. aos_str_set(&object, "<您的object名字>");
  16. aos_str_set(&filename, "<處理後圖片保存路徑>");
  17. params = aos_table_make(p, 1);
  18. style = "image/resize,m_fixed,w_100,h_100";
  19. apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
  20. /* 下載處理後的圖片到本地檔案 */
  21. s = oss_get_object_to_file(options, &bucket, &object, headers,
  22. params, &filename, &resp_headers);
  23. if (aos_status_is_ok(s)) {
  24. printf("get object to file succeeded\n");
  25. } else {
  26. printf("get object to file failed\n");
  27. }
  28. aos_pool_destroy(p);

自訂樣式

  1. aos_pool_t *p = NULL;
  2. aos_string_t bucket;
  3. aos_string_t object;
  4. oss_request_options_t *options = NULL;
  5. aos_table_t *headers = NULL;
  6. aos_table_t *params = NULL;
  7. aos_table_t *resp_headers = NULL;
  8. aos_status_t *s = NULL;
  9. aos_string_t filename;
  10. char *style = NULL;
  11. aos_pool_create(&p, NULL);
  12. options = oss_request_options_create(p);
  13. init_sample_request_options(options, AOS_FALSE);
  14. aos_str_set(&bucket, "<您的bucket名字>");
  15. aos_str_set(&object, "<您的object名字>");
  16. aos_str_set(&filename, "<處理後圖片保存路徑>");
  17. /* 自訂樣式 */
  18. style = "style/oss-pic-style-w-100";
  19. params = aos_table_make(p, 1);
  20. apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
  21. /* 下載處理後的圖片到本地檔案 */
  22. s = oss_get_object_to_file(options, &bucket, &object, headers,
  23. params, &filename, &resp_headers);
  24. if (aos_status_is_ok(s)) {
  25. printf("get object to file succeeded\n");
  26. } else {
  27. printf("get object to file failed\n");
  28. }
  29. aos_pool_destroy(p);

級聯處理

  1. aos_pool_t *p = NULL;
  2. aos_string_t bucket;
  3. aos_string_t object;
  4. oss_request_options_t *options = NULL;
  5. aos_table_t *headers = NULL;
  6. aos_table_t *params = NULL;
  7. aos_table_t *resp_headers = NULL;
  8. aos_status_t *s = NULL;
  9. aos_string_t filename;
  10. char *style = NULL;
  11. aos_pool_create(&p, NULL);
  12. options = oss_request_options_create(p);
  13. init_sample_request_options(options, AOS_FALSE);
  14. aos_str_set(&bucket, "<您的bucket名字>");
  15. aos_str_set(&object, "<您的object名字>");
  16. aos_str_set(&filename, "<處理後圖片保存路徑>");
  17. /* 級聯處理 */
  18. style = "image/resize,m_fixed,w_100,h_100/rotate,90";
  19. params = aos_table_make(p, 1);
  20. apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
  21. /* 下載處理後的圖片到本地檔案 */
  22. s = oss_get_object_to_file(options, &bucket, &object, headers,
  23. params, &filename, &resp_headers);
  24. if (aos_status_is_ok(s)) {
  25. printf("get object to file succeeded\n");
  26. } else {
  27. printf("get object to file failed\n");
  28. }
  29. aos_pool_destroy(p);

圖片處理工具

  • 可視化圖片處理工具 ImageStyleViever ,可以直觀的看到OSS圖片處理的結果
  • OSS圖片處理的功能、使用示範 頁面