您可以通过文件URL、API、SDK对OSS内图片进行处理,本文介绍如何使用这三种方式进行图片处理。
通过文件URL处理图片
通过文件URL处理图片有两种方式,一种是添加图片处理参数,另一种是添加图片样式参数。
注意 通过文件URL访问图片时,默认是下载行为。如需确保通过文件URL访问图片时是预览行为,您需要绑定自定义域名并添加CNAME记录。具体操作,请参见
绑定自定义域名。
图片处理方式 | 添加图片处理参数 | 添加图片样式参数 |
---|---|---|
图片处理URL | https://bucketname.endpoint/objectname?x-oss-process=image/action,parame_value |
https://bucketname.endpoint/objectname?x-oss-process=style/stylename |
参数说明 |
|
如果您设置了自定义分隔符,可使用分隔符代替 |
示例 | https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_300/quality,q_90 | https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/panda_style |
以上说明仅针对允许匿名访问的Object,若您的Object不允许匿名访问,需通过SDK的方式将图片处理操作加入签名中。详情请参见:
使用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内。详情请参见图片处理持久化。