全部产品
阿里云办公

图片处理

更新时间:2018-07-12 22:20:37

图片处理是OSS提供的海量、安全、低成本、高可靠的图片处理服务。原始图片上传到OSS后,您可以通过简单的RESTful接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。

图片处理的详细信息请参见OSS图片处理指南

图片处理功能

OSS图片处理提供以下功能:

图片处理使用

图片处理使用标准的HTTP GET请求。您可以在URL的QueryString中设置处理参数。

如果图片文件的访问权限为私有读写,必须通过授权才能进行访问。

匿名访问

您可以通过如下格式的三级域名匿名访问处理后的图片:

  1. http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=image/<yourAction>,<yourParameValue>
参数 描述
bucket 存储空间名称
endpoint 存储空间所在地域的访问域名
object 图片文件名称
image 图片处理的保留标志符
action 对图片做的操作,如缩放、裁剪、旋转等
param 对图片做的操作所对应的参数

基础操作

例如,将图缩略成宽度为100,高度按比例处理:

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100

自定义样式

使用如下格式的三级域名匿名访问图片处理:

  1. http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=style/<yourStyleName>
  • style:自定义样式的保留标志符。
  • yourStyleName:自定义样式名称,即通过控制台自定义样式的规则名称。

例如:

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/oss-pic-style-w-100

级联处理

通过级联处理,可以对一张图片顺序进行多个操作,格式如下:

  1. http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=image/<yourAction1>,<yourParameValue1>/<yourAction2>,<yourParameValue2>/...

例如:

  1. http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100/rotate,90

支持HTTPS访问

图片服务支持HTTPS访问,例如:

  1. https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100

授权访问

授权访问支持自定义样式、HTTPS和级联处理。

以下代码用于生成带签名的图片处理URL:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # Endpoint以杭州为例,其它Region请按实际情况填写。
  4. endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
  5. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  6. access_key_id = '<yourAccessKeyId>'
  7. access_key_secret = '<yourAccessKeySecret>'
  8. bucket_name = '<yourBucketName>'
  9. key = 'example.jpg'
  10. # 创建存储空间实例,所有文件相关的方法都需要通过存储空间实例来调用。
  11. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  12. # 上传示例图片。
  13. bucket.put_object_from_file(key, 'example.jpg')
  14. # 生成带签名的URL,并指定过期时间为10分钟。过期时间单位是秒。
  15. style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
  16. url = bucket.sign_url('GET', key, 10 * 60, params={'x-oss-process': style})
  17. print(url)

SDK访问

对于任意权限的图片文件,都可以直接使用SDK访问和处理。

SDK处理图片文件支持自定义样式、HTTPS和级联处理。图片处理的完整代码请参见:GitHub

基础操作

get_object和get_object_to_file支持图片处理。

以下代码展示了图片处理的基础操作:

  1. # -*- coding: utf-8 -*-
  2. import os
  3. import oss2
  4. # Endpoint以杭州为例,其它Region请按实际情况填写。
  5. endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
  6. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  7. access_key_id = '<yourAccessKeyId>'
  8. access_key_secret = '<yourAccessKeySecret>'
  9. bucket_name = '<yourBucketName>'
  10. key = 'example.jpg'
  11. new_pic = 'example-new.jpg'
  12. # 创建存储空间实例,所有文件相关的方法都需要通过存储空间实例来调用。
  13. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  14. # 上传示例图片。
  15. bucket.put_object_from_file(key, 'example.jpg')
  16. # 缩放
  17. style = 'image/resize,m_fixed,w_100,h_100'
  18. bucket.get_object_to_file(key, new_pic, process=style)
  19. # 裁剪
  20. style = 'image/crop,w_100,h_100,x_100,y_100,r_1'
  21. bucket.get_object_to_file(key, new_pic, process=style)
  22. # 旋转
  23. style = 'image/rotate,90'
  24. bucket.get_object_to_file(key, new_pic, process=style)
  25. # 锐化
  26. style = 'image/sharpen,100'
  27. bucket.get_object_to_file(key, new_pic, process=style)
  28. # 水印
  29. style = 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'
  30. bucket.get_object_to_file(key, new_pic, process=style)
  31. # 格式转换
  32. style = 'image/format,png'
  33. bucket.get_object_to_file(key, new_pic, process=style)
  34. # 删除示例图片。
  35. bucket.delete_object(key)
  36. # 清除本地文件。
  37. os.remove(new_pic)

自定义样式

以下代码用于自定义图片样式:

  1. # -*- coding: utf-8 -*-
  2. import os
  3. import oss2
  4. # Endpoint以杭州为例,其它Region请按实际情况填写。
  5. endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
  6. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  7. access_key_id = '<yourAccessKeyId>'
  8. access_key_secret = '<yourAccessKeySecret>'
  9. bucket_name = '<yourBucketName>'
  10. key = 'example.jpg'
  11. new_pic = 'example-new.jpg'
  12. # 创建存储空间实例,所有文件相关的方法都需要通过存储空间实例来调用。
  13. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  14. # 上传示例图片。
  15. bucket.put_object_from_file(key, 'example.jpg')
  16. # 自定义样式。
  17. style = 'style/oss-pic-style-w-100'
  18. # 图片处理。
  19. bucket.get_object_to_file(key, new_pic, process=style)
  20. # 删除示例图片。
  21. bucket.delete_object(key)
  22. # 清除本地文件。
  23. os.remove(new_pic)

级联处理

以下代码用于级联处理图片:

  1. # -*- coding: utf-8 -*-
  2. import os
  3. import oss2
  4. # Endpoint以杭州为例,其它Region请按实际情况填写。
  5. endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
  6. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  7. access_key_id = '<yourAccessKeyId>'
  8. access_key_secret = '<yourAccessKeySecret>'
  9. bucket_name = '<yourBucketName>'
  10. key = 'example.jpg'
  11. new_pic = 'example-new.jpg'
  12. # 创建存储空间实例,所有文件相关的方法都需要通过存储空间实例来调用。
  13. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  14. # 上传示例图片。
  15. bucket.put_object_from_file(key, 'example.jpg')
  16. # 级联处理。
  17. style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
  18. # 图片处理。
  19. bucket.get_object_to_file(key, new_pic, process=style)
  20. # 删除示例图片。
  21. bucket.delete_object(key)
  22. # 清除本地文件。
  23. os.remove(new_pic)

图片处理工具

您可以通过可视化图片处理工具ImageStyleViever直观地看到OSS图片处理结果。

本文导读目录