您可以在一个样式(Style)中包含多个图片处理参数,快速实现复杂的图片处理操作。本文介绍如何创建和使用图片样式。

创建样式

一个存储空间(Bucket)最多可创建50个样式,这些样式仅可以作用于该Bucket下的图片文件。如您的业务有更多样式的需求,请联系技术支持

  1. 登录OSS管理控制台
  2. 单击Bucket列表,之后单击目标Bucket名称。
  3. 单击数据处理 > 图片处理 > 新建样式
  4. 新建样式面板配置您的样式。
    您可以使用基础编辑高级编辑两种方式新建样式:
    • 基础编辑:选择您需要的图片处理方式,例如缩放图片、添加水印、修改图片格式等。
    • 高级编辑:使用API代码编辑图片处理方式,格式为:image/action1,parame_value1/action2,parame_value2/...

      例如image/resize,p_63/quality,q_90表示先将图片缩放到原图的63%,再设置图片相对质量为90%。

    图片处理参数的更多信息请参见图片处理各参数对应文档。

    说明 图片样式的名称长度为1~64个字符,且只能包含数字、大小写字母、下划线(_)、短划线(-)和英文句号(.)。
  5. 单击确定

导出样式

您可以将某个Bucket已创建的样式导出,导出的样式可以导入到其他Bucket中。

  1. 登录OSS管理控制台
  2. 单击Bucket列表,之后单击目标Bucket名称。
  3. 单击数据处理 > 图片处理
  4. 单击导出样式,在弹出的另存为对话框选择样式的保存位置,之后单击保存

导入样式

您可以将样式文件导入到Bucket中,可以快速批量生成样式。

  1. 登录OSS管理控制台
  2. 单击Bucket列表,之后单击目标Bucket名称。
  3. 单击数据处理 > 图片处理
  4. 单击导入样式,在弹出的打开对话框选择样式文件,之后单击打开

样式使用规则

图片样式配置完成后,您可以使用样式替换图片处理的参数,使用方式如下:
  • 图片处理URL

    您可以直接将图片样式添加到图片的访问URL上,格式为:http(s)//:BucketName.Endpoint/ObjectName?x-oss-process=style/<StyleName>

    示例:https://image-demo-oss-zhangjiakou.oss-cn-zhangjiakou.aliyuncs.com/example.jpg?x-oss-process=style/small

    若您设置了自定义分隔符,可使用分隔符代替?x-oss-process=style/内容,进一步简化图片处理URL。

    例如分隔符设置为英文感叹号(!),则图片处理URL为:http(s)//:BucketName.Endpoint/ObjectName!StyleName

    示例:https://image-demo-oss-zhangjiakou.oss-cn-zhangjiakou.aliyuncs.com/example.jpg!small

    自定义分隔符的配置方式请参见设置自定义分隔符

  • 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);
    
    // 使用自定义样式处理图片。
    String style = "style/<yourCustomStyleName>";
    GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
    request.setProcess(style);
    // 将图片命名为example-new.jpg后保存在本地。
    ossClient.getObject(request, new File("example-new.jpg"));
    
    // 关闭OSSClient。
    ossClient.shutdown();
    更多语言的SDK demo请参见:
说明 如使用自定义样式处理动态图片(如GIF格式的图片),需要在样式中加入格式转换参数/format,gif,否则可能会导致其在处理后变为静态图。