您可以通过文件URL、API、SDK对OSS内图片进行处理,本文介绍如何使用这三种方式进行图片处理。
通过文件访问URL处理图片
您可以在图片的访问URL后添加相应的图片处理参数或图片样式处理图片。
注意 通过文件URL访问图片时,默认是下载行为。如需确保通过文件URL访问图片时是预览行为,您需要绑定自定义域名并添加CNAME记录。具体操作,请参见绑定自定义域名。
- 使用图片处理参数
格式为:
https://bucketname.endpoint/objectname?x-oss-process=image/action,parame_value
https://bucketname.endpoint/objectname
:Object的访问地址。获取方式,请参见上传Object后如何获取访问URL。x-oss-process=image/
:固定参数,标明使用图片处理参数对图片文件进行处理。action,parame_value
:图片处理的操作(action)、参数(parame)和值(value),用于定义图片处理的方式。多个操作以正斜线(/)隔开,OSS将按图片处理参数的顺序处理图片。例如image/resize,w_200/rotate,90
表示将图片先按比例缩放至宽200 px,再将图片旋转90°。图片处理支持的参数,请参见处理参数。
- 使用样式参数
格式为:
https://bucketname.endpoint/objectname?x-oss-process=style/stylename
- https://bucketname.endpoint/objectname:Object的访问地址。
- x-oss-process=style/:固定参数,标明使用图片样式参数对图片文件进行处理。
- stylename:您提前在OSS控制台设置的样式名称。配置方法,请参见创建样式。
示例:https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/panda_style
若您设置了自定义分隔符,可使用分隔符代替
?x-oss-process=style/
内容,进一步简化图片处理URL。例如分隔符设置为感叹号(!),则图片处理URL为:<https://bucketname.endpoint/objectname!stylename
。自定义分隔符的配置方式请参见设置自定义分隔符。
以上说明仅针对允许匿名访问的Object,若您的Object不允许匿名访问,需将图片处理操作加入签名中。详情请参见:
使用SDK处理图片
您可以在SDK中添加不同的图片处理参数或样式参数处理图片。以Java SDK为例,代码如下:
- 使用图片处理参数
使用图片处理参数处理图片时,多个操作以正斜线(/)隔开。
// Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String bucketName = "<yourBucketName>"; String objectName = "<yourObjectName>"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 先将图片强制缩放为宽高100 px,之后添加文字水印,水印内容为:Hello 图片服务。 String style = "image/resize,m_fixed,w_100,h_100/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ"; GetObjectRequest request = new GetObjectRequest(bucketName, objectName); request.setProcess(style); ossClient.getObject(request, new File("<example.jpg>")); // 关闭OSSClient。 ossClient.shutdown();
- 使用样式参数
// Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String bucketName = "<yourBucketName>"; String objectName = "<yourObjectName>"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 添加自定义样式。 String style = "style/<yourCustomStyleName>"; GetObjectRequest request = new GetObjectRequest(bucketName, objectName); request.setProcess(style); ossClient.getObject(request, new File("<example.jpg>")); // 关闭OSSClient。 ossClient.shutdown();
更多语言的SDK demo请参见:
使用API接口处理图片
您可以在GetObject中增加图片处理参数或样式参数处理图片。
- 使用图片处理参数
请求示例如下:
GET /oss.jpg?x-oss-process=image/resize,w_100 HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Fri, 24 Feb 2012 06:38:30 GMT Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:UNQDb7GapEgJkcde6OhZ9J*****
- 使用样式参数
请求示例如下:
GET /oss.jpg?x-oss-process=style/styleexample HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Fri, 24 Feb 2012 06:40:10 GMT Authorization: OSS qn6qrrawuk53oqxo2otfjbyc:UNapEgQDb7GJkcde6OhZ9J*****
保存处理后的图片
图片处理服务默认不保存处理后的图片。您可以在图片处理的请求内添加转存参数,将处理后的图片作为Object保存至指定的Bucket内。详情请参见图片处理持久化。