全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

图片处理

更新时间:2017-08-09 16:07:17

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图片处理的功能、使用演示 页面
本文导读目录