OSS图片处理,是OSS对外提供的海量、安全、低成本、高可靠的图片处理服务。用户将原始图片上传保存到OSS,通过简单的 RESTful 接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。图片处理提供图片处理接口,图片上传请使用上传接口。基于OSS图片处理,用户可以搭建自己的图片处理服务。
图片处理基础功能
OSS图片处理提供以下功能:
图片处理使用
图片处理使用标准的 HTTP GET 请求来访问,所有的处理参数是编码在 URL 中的QueyString。
匿名访问
如果图片文件(Object)的访问权限是 公共读 ,如下表所示的权限,则可以匿名访问图片服务。
通过如下格式的三级域名匿名访问图片处理:
- [backcolor=transparent][backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//bucket.<endpoint>/object?x-oss-process=image/action,parame_value
[backcolor=transparent]
- bucket:用户的存储空间(bucket)名称
- endpoint:用户存储空间所在数据中心的访问域名
- object:用户上传在OSS上的图片文件
- image:图片处理保留标志符
- action:用户对图片做的操作,如缩放、裁剪、旋转等
- parame:用户对图片做的操作所对应的参数
例如:
- [backcolor=transparent][backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
[backcolor=transparent]
自定义样式,使用如下格式的三级域名匿名访问图片处理:
- [backcolor=transparent][backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//bucket.<endpoint>/object?x-oss-process=x-oss-process=style/name
[backcolor=transparent]
- style:用户自定义样式系统保留标志符
- name:自定义样式名称,即控制台定义样式的 规则名
例如:
- [backcolor=transparent][backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/oss-pic-style-w-100
[backcolor=transparent]
通过级联处理,可以对一张图片顺序实施多个操作,格式如下:
- [backcolor=transparent][backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//bucket.<endpoint>/object?x-oss-process=image/action,parame_value/action,parame_value/...
[backcolor=transparent]
例如:
- [backcolor=transparent][backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100/rotate,90
[backcolor=transparent]
图片服务也支持HTTPS访问,例如:
- [backcolor=transparent][backcolor=transparent]https[backcolor=transparent]:[backcolor=transparent]//image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
[backcolor=transparent]
授权访问
对私有权限的文件(Object),如下表所示的权限,必须通过授权才能访问图片服务。
生成带签名的图片处理的URL代码如下:
- [backcolor=transparent]
- [backcolor=transparent]aos_pool_t[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]p[backcolor=transparent];
- [backcolor=transparent]oss_request_options_t[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]options[backcolor=transparent];
- [backcolor=transparent]aos_http_request_t[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]req[backcolor=transparent];
- [backcolor=transparent]char[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]url_str[backcolor=transparent];
- [backcolor=transparent]aos_table_t[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]params [backcolor=transparent]=[backcolor=transparent] NULL[backcolor=transparent];
- [backcolor=transparent]aos_string_t[backcolor=transparent] bucket[backcolor=transparent];
- [backcolor=transparent]aos_string_t[backcolor=transparent] object[backcolor=transparent];
- [backcolor=transparent]apr_time_t[backcolor=transparent] now[backcolor=transparent];
- [backcolor=transparent]int64_t[backcolor=transparent] expire_time[backcolor=transparent];[backcolor=transparent]
- [backcolor=transparent]aos_pool_create[backcolor=transparent](&[backcolor=transparent]p[backcolor=transparent],[backcolor=transparent] NULL[backcolor=transparent]);
- [backcolor=transparent]/* 创建并初始化options */
- [backcolor=transparent]options [backcolor=transparent]=[backcolor=transparent] oss_request_options_create[backcolor=transparent]([backcolor=transparent]p[backcolor=transparent]);
- [backcolor=transparent]init_sample_request_options[backcolor=transparent]([backcolor=transparent]options[backcolor=transparent],[backcolor=transparent] AOS_FALSE[backcolor=transparent]);
- [backcolor=transparent]/* 初始化参数 */
- [backcolor=transparent]aos_str_set[backcolor=transparent](&[backcolor=transparent]bucket[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"<您的bucket名字>"[backcolor=transparent]);
- [backcolor=transparent]aos_str_set[backcolor=transparent](&[backcolor=transparent]object[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"<您的object名字>"[backcolor=transparent]);
- [backcolor=transparent]/* 图片处理 */
- [backcolor=transparent]params [backcolor=transparent]=[backcolor=transparent] aos_table_make[backcolor=transparent]([backcolor=transparent]p[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]1[backcolor=transparent]);
- [backcolor=transparent]apr_table_set[backcolor=transparent]([backcolor=transparent]params[backcolor=transparent],[backcolor=transparent] OSS_PROCESS[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"image/resize,m_fixed,w_100,h_100"[backcolor=transparent]);
- [backcolor=transparent]req [backcolor=transparent]=[backcolor=transparent] aos_http_request_create[backcolor=transparent]([backcolor=transparent]p[backcolor=transparent]);
- [backcolor=transparent]req[backcolor=transparent]->[backcolor=transparent]method [backcolor=transparent]=[backcolor=transparent] HTTP_GET[backcolor=transparent];
- [backcolor=transparent]req[backcolor=transparent]->[backcolor=transparent]query_params [backcolor=transparent]=[backcolor=transparent] params[backcolor=transparent];
- [backcolor=transparent]/* 过期时间,单位秒 */
- [backcolor=transparent]now [backcolor=transparent]=[backcolor=transparent] apr_time_now[backcolor=transparent]();
- [backcolor=transparent]expire_time [backcolor=transparent]=[backcolor=transparent] now [backcolor=transparent]/[backcolor=transparent] [backcolor=transparent]1000000[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]10[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent] [backcolor=transparent]60[backcolor=transparent];
- [backcolor=transparent]/* 生成签名url */
- [backcolor=transparent]url_str [backcolor=transparent]=[backcolor=transparent] oss_gen_signed_url[backcolor=transparent]([backcolor=transparent]options[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]&[backcolor=transparent]bucket[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]&[backcolor=transparent]object[backcolor=transparent],[backcolor=transparent] expire_time[backcolor=transparent],[backcolor=transparent] req[backcolor=transparent]);
- [backcolor=transparent]printf[backcolor=transparent]([backcolor=transparent]"url:%s\n"[backcolor=transparent],[backcolor=transparent] url_str[backcolor=transparent]);
- [backcolor=transparent]aos_pool_destroy[backcolor=transparent]([backcolor=transparent]p[backcolor=transparent]);
[backcolor=transparent]
提示:
- 授权访问支持 自定义样式、 HTTPS、 级联处理
- oss_gen_signed_url 过期时间单位是[backcolor=transparent]秒
SDK访问
对于任意权限的图片文件,都可以直接使用 SDK 访问图片、进行处理。
提示:
- 图片处理的完整代码请参考:GitHub
- SDK处理图片文件支持 自定义样式、 HTTPS、 级联处理