OSS圖片處理,是OSS對外提供的海量、安全、低成本、高可靠的圖片處理服務。使用者將原始圖片上傳保存到OSS,通過簡單的 RESTful
介面,在任何時間、任何地點、任何互連網裝置上對圖片進行處理。圖片處理提供圖片處理介面,圖片上傳請使用上傳介面。基於OSS圖片處理,使用者可以搭建自己的圖片處理服務。
圖片處理基礎功能
OSS圖片處理提供以下功能:
圖片處理使用
圖片處理使用標準的 HTTP GET
請求來訪問,所有的處理參數是編碼在 URL
中的QueyString。
匿名訪問
如果圖片檔案(Object)的存取權限是 公共讀
,如下表所示的許可權,則可以匿名訪問圖片服務。
Bucket許可權 | Object許可權 |
---|---|
公共讀私有寫(public-read)或 公共讀寫(public-read-write) |
預設(default) |
任意許可權 | 公共讀私有寫(public-read)或 公共讀寫(public-read-write) |
通過如下格式的第三層網域名匿名訪問圖片處理:
http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value
- bucket:使用者的儲存空間(bucket)名稱
- endpoint:使用者儲存空間所在資料中心的訪問網域名稱
- object:使用者上傳在OSS上的圖片檔案
- image:圖片處理保留標誌符
- action:使用者對圖片做的操作,如縮放、裁剪、旋轉等
- parame:使用者對圖片做的操作所對應的參數
例如:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
自訂樣式,使用如下格式的第三層網域名匿名訪問圖片處理:
http://bucket.<endpoint>/object?x-oss-process=x-oss-process=style/name
- style:使用者自訂樣式系統保留標誌符
- name:自訂樣式名稱,即控制台定義樣式的
規則名
例如:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/oss-pic-style-w-100
通過級聯處理,可以對一張圖片順序實施多個操作,格式如下:
http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value/action,parame_value/...
例如:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100/rotate,90
圖片服務也支援HTTPS訪問,例如:
https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
授權訪問
對私有許可權的檔案(Object),如下表所示的許可權,必須通過授權才能訪問圖片服務。
Bucket許可權 | Object許可權 |
---|---|
私有讀寫(private) | 預設許可權(default) |
任意許可權 | 私有讀寫(private) |
生成帶簽名的圖片處理的URL代碼如下:
aos_pool_t *p;
oss_request_options_t *options;
aos_http_request_t *req;
char *url_str;
aos_table_t *params = NULL;
aos_string_t bucket;
aos_string_t object;
apr_time_t now;
int64_t expire_time;
aos_pool_create(&p, NULL);
/* 建立並初始化options */
options = oss_request_options_create(p);
init_sample_request_options(options, AOS_FALSE);
/* 初始化參數 */
aos_str_set(&bucket, "<您的bucket名字>");
aos_str_set(&object, "<您的object名字>");
/* 圖片處理 */
params = aos_table_make(p, 1);
apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
req = aos_http_request_create(p);
req->method = HTTP_GET;
req->query_params = params;
/* 過期時間,單位秒 */
now = apr_time_now();
expire_time = now / 1000000 + 10 * 60;
/* 生成簽名url */
url_str = oss_gen_signed_url(options, &bucket, &object, expire_time, req);
printf("url:%s\n", url_str);
aos_pool_destroy(p);
提示:
- 授權訪問支援
自訂樣式
、HTTPS
、級聯處理
oss_gen_signed_url
過期時間單位是秒
SDK訪問
對於任意許可權的圖片檔案,都可以直接使用 SDK
訪問圖片、進行處理。
提示:
- 圖片處理的完整代碼請參考:GitHub
- SDK處理圖片檔案支援
自訂樣式
、HTTPS
、級聯處理
基礎操作
圖片處理的基礎操作包括,獲取圖片資訊、格式轉換、縮放、裁剪、旋轉、效果、浮水印等。
aos_pool_t *p = NULL;
aos_string_t bucket;
aos_string_t object;
oss_request_options_t *options = NULL;
aos_table_t *headers = NULL;
aos_table_t *params = NULL;
aos_table_t *resp_headers = NULL;
aos_status_t *s = NULL;
aos_string_t filename;
char *style = NULL;
aos_pool_create(&p, NULL);
options = oss_request_options_create(p);
init_sample_request_options(options, AOS_FALSE);
aos_str_set(&bucket, "<您的bucket名字>");
aos_str_set(&object, "<您的object名字>");
aos_str_set(&filename, "<處理後圖片保存路徑>");
params = aos_table_make(p, 1);
style = "image/resize,m_fixed,w_100,h_100";
apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
/* 下載處理後的圖片到本地檔案 */
s = oss_get_object_to_file(options, &bucket, &object, headers,
params, &filename, &resp_headers);
if (aos_status_is_ok(s)) {
printf("get object to file succeeded\n");
} else {
printf("get object to file failed\n");
}
aos_pool_destroy(p);
自訂樣式
aos_pool_t *p = NULL;
aos_string_t bucket;
aos_string_t object;
oss_request_options_t *options = NULL;
aos_table_t *headers = NULL;
aos_table_t *params = NULL;
aos_table_t *resp_headers = NULL;
aos_status_t *s = NULL;
aos_string_t filename;
char *style = NULL;
aos_pool_create(&p, NULL);
options = oss_request_options_create(p);
init_sample_request_options(options, AOS_FALSE);
aos_str_set(&bucket, "<您的bucket名字>");
aos_str_set(&object, "<您的object名字>");
aos_str_set(&filename, "<處理後圖片保存路徑>");
/* 自訂樣式 */
style = "style/oss-pic-style-w-100";
params = aos_table_make(p, 1);
apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
/* 下載處理後的圖片到本地檔案 */
s = oss_get_object_to_file(options, &bucket, &object, headers,
params, &filename, &resp_headers);
if (aos_status_is_ok(s)) {
printf("get object to file succeeded\n");
} else {
printf("get object to file failed\n");
}
aos_pool_destroy(p);
級聯處理
aos_pool_t *p = NULL;
aos_string_t bucket;
aos_string_t object;
oss_request_options_t *options = NULL;
aos_table_t *headers = NULL;
aos_table_t *params = NULL;
aos_table_t *resp_headers = NULL;
aos_status_t *s = NULL;
aos_string_t filename;
char *style = NULL;
aos_pool_create(&p, NULL);
options = oss_request_options_create(p);
init_sample_request_options(options, AOS_FALSE);
aos_str_set(&bucket, "<您的bucket名字>");
aos_str_set(&object, "<您的object名字>");
aos_str_set(&filename, "<處理後圖片保存路徑>");
/* 級聯處理 */
style = "image/resize,m_fixed,w_100,h_100/rotate,90";
params = aos_table_make(p, 1);
apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
/* 下載處理後的圖片到本地檔案 */
s = oss_get_object_to_file(options, &bucket, &object, headers,
params, &filename, &resp_headers);
if (aos_status_is_ok(s)) {
printf("get object to file succeeded\n");
} else {
printf("get object to file failed\n");
}
aos_pool_destroy(p);
圖片處理工具
- 可視化圖片處理工具 ImageStyleViever ,可以直觀的看到OSS圖片處理的結果
- OSS圖片處理的功能、使用示範 頁面