对象存储OSS的图片处理服务默认不保存处理后的图片,您需要在图片处理的请求内添加转存参数,将处理后的图片作为文件(Object)保存至指定的存储空间(Bucket)内。
注意事项
- 进行图片转存操作要求具有源Bucket的
oss:PostProcessTask
权限、目标Bucket和目标Object的写入权限。更多信息,请参见RAM Policy概述。 - 原图所在Bucket和处理后图片转存的目标Bucket可以相同也可以不同,但是必须属于同一账号下的相同地域。
- 不支持将文件URL处理后的图片直接保存至指定Bucket。您可以将处理后的图片保存到本地,之后再上传至指定Bucket。
SDK
通过SDK处理图片时,您可以通过ImgSaveAs接口将处理后的图片保存至指定Bucket。以Java SDK为例,代码如下:
// 目标Bucket所在地域的Endpoint,以华东1(杭州)地域为例。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "YourAccessKeyId";
String accessKeySecret = "YourAccessKeySecret";
// 原图所在Bucket名称。
String bucketName = "SourceBucketName";
// 原图名称。即不包括Bucket名称在内的原图完整访问路径,例如example/image.png。
String sourceImage = "SourceObjectName";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 将图片缩放为固定宽高100 px后,存储至目标Bucket。
StringBuilder sbStyle = new StringBuilder();
Formatter styleFormatter = new Formatter(sbStyle);
String styleType = "image/resize,m_fixed,w_100,h_100";
String targetImage = "TargetBucketName";
styleFormatter.format("%s|sys/saveas,o_%s,b_%s", styleType,
BinaryUtil.toBase64String(targetImage.getBytes()),
BinaryUtil.toBase64String(bucketName.getBytes()));
System.out.println(sbStyle.toString());
ProcessObjectRequest request = new ProcessObjectRequest(bucketName, sourceImage, sbStyle.toString());
GenericResult processResult = ossClient.processObject(request);
String json = IOUtils.readStreamAsString(processResult.getResponse().getContent(), "UTF-8");
processResult.getResponse().getContent().close();
System.out.println(json);
} catch (Exception e) {
e.printStackTrace();
}
// 关闭OSSClient。
ossClient.shutdown();
Bucket和Object的命名规范,请参见基本概念。
更多语言的SDK demo请参见:
API
使用PostObject接口调用图片处理服务时,您可以在图片处理请求中增加saveas参数将处理后的图片保存至指定Bucket。
使用saveas参数时,您需要携带如下选项:
参数 | 含义 |
---|---|
o | 目标Object名称,参数需经过URL Safe的Base64编码。具体操作,请参见水印编码。 |
b | 目标Bucket名称,参数需经过URL Safe的Base64编码。如果不指定目标Bucket,则默认保存到原图所在Bucket。 |
- 使用图片处理参数处理图片并转存至指定Bucket。示例如下:
POST /ObjectName?x-oss-process HTTP/1.1 Host: oss-example.oss.aliyuncs.com Content-Length: 247 Date: Fri, 04 May 2012 03:21:12 GMT Authorization: OSS qn6qrrqxo2oawuk53otf****:KU5h8YMUC78M30dXqf3JxrT****= // 将目标图片test.jpg等比缩放为宽100 px后,保存到名为test的Bucket中。 x-oss-process=image/resize,w_100|sys/saveas,o_dGVzdC5qcGc,b_dGVzdA
- 使用样式处理图片并转存至指定Bucket。示例如下:
POST /ObjectName?x-oss-process HTTP/1.1 Host: oss-example.oss.aliyuncs.com Content-Length: 247 Date: Fri, 04 May 2012 03:22:13 GMT Authorization: OSS qn6qrrqxo2oawuk53otf****:KU5h8YMUC78M30dXqf3JxrT****= // 使用名为examplestyle的样式处理目标图片test.jpg后,保存到名为test的Bucket中。 x-oss-process=style/examplestyle|sys/saveas,o_dGVzdC5qcGc,b_dGVzdA
在文档使用中是否遇到以下问题
更多建议
匿名提交