OSS图片处理是OSS对外提供的海量、安全、低成本、高可靠的图片处理服务。用户将原始图片上传保存到OSS,通过简单的 RESTful 接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。图片处理提供图片处理接口,图片上传请使用上传接口。基于OSS图片处理,用户可以搭建自己的图片处理服务。
图片处理基础功能
OSS图片处理提供以下功能:
图片处理使用
图片处理使用标准的 HTTP GET 请求来访问,所有的处理参数是编码在 URL 中的QueyString。
匿名访问
如果图片文件(Object)的访问权限是 公共读 ,如下表所示的权限,则可以匿名访问图片服务。
通过如下格式的三级域名匿名访问图片处理:
- http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value
- bucket:用户的存储空间(bucket)名称
- endpoint:用户存储空间所在数据中心的访问域名
- object:用户上传在OSS上的图片文件
- image:图片处理保留标志符
- action:用户对图片做的操作,如缩放、裁剪、旋转等
- parame:用户对图片做的操作所对应的参数
例如:
- http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
自定义样式,使用如下格式的三级域名匿名访问图片处理:
- http://bucket.<endpoint>/object?x-oss-process=x-oss-process=style/name
- style:用户自定义样式系统保留标志符
- name:自定义样式名称,即控制台定义样式的 规则名
例如:
- http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/oss-pic-style-w-100
通过级联处理,可以对一张图片顺序实施多个操作,格式如下:
- http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value/action,parame_value/...
例如:
- http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100/rotate,90
图片服务也支持HTTPS访问,例如:
- https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
授权访问
对私有权限的文件(Object),如下表所示的权限,必须通过授权才能访问图片服务。
生成带签名的图片处理的URL代码如下:
- # -*- coding: utf-8 -*-
- import oss2
- endpoint = '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
- access_key_id = '<access_key_id>'
- access_key_secret = '<access_key_secret>'
- bucket_name = '<bucket_name>'
- key = 'example.jpg'
- # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
- bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
- # 上传示例图片
- bucket.put_object_from_file(key, 'example.jpg')
- # 生成带签名的URL,过期时间10分钟
- style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
- url = bucket.sign_url('GET', key, 10 * 60, params={'x-oss-process': style})
- print(url)
提示:
- 授权访问支持 自定义样式、 HTTPS、 级联处理
- sign_url 过期时间单位是秒
SDK访问
对于任意权限的图片文件,都可以直接使用 SDK 访问图片、进行处理。
提示:
- 图片处理的完整代码请参考:GitHub
- SDK处理图片文件支持 自定义样式、 HTTPS、 级联处理
基础操作
图片处理的基础操作包括,
获取图片信息、
格式转换、
缩放、
裁剪、
旋转、
效果、
水印等。
- # -*- coding: utf-8 -*-
- import os
- import oss2
- endpoint = '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
- access_key_id = '<access_key_id>'
- access_key_secret = '<access_key_secret>'
- bucket_name = '<bucket_name>'
- key = 'example.jpg'
- new_pic = 'example-new.jpg'
- # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
- bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
- # 上传示例图片
- bucket.put_object_from_file(key, 'example.jpg')
- # 图片缩放
- style = 'image/resize,m_fixed,w_100,h_100'
- bucket.get_object_to_file(key, new_pic, process=style)
- # 图片裁剪
- style = 'image/crop,w_100,h_100,x_100,y_100,r_1'
- bucket.get_object_to_file(key, new_pic, process=style)
- # 图片旋转
- style = 'image/rotate,90'
- bucket.get_object_to_file(key, new_pic, process=style)
- # 图片锐化
- style = 'image/sharpen,100'
- bucket.get_object_to_file(key, new_pic, process=style)
- # 图片加文字水印
- style = 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'
- bucket.get_object_to_file(key, new_pic, process=style)
- # 图片格式转换
- style = 'image/format,png'
- bucket.get_object_to_file(key, new_pic, process=style)
- # 删除示例图片
- bucket.delete_object(key)
- # 清除本地文件
- os.remove(new_pic)
提示: get_object也支持图片处理功能
自定义样式
- # -*- coding: utf-8 -*-
- import os
- import oss2
- endpoint = '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
- access_key_id = '<access_key_id>'
- access_key_secret = '<access_key_secret>'
- bucket_name = '<bucket_name>'
- key = 'example.jpg'
- new_pic = 'example-new.jpg'
- # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
- bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
- # 上传示例图片
- bucket.put_object_from_file(key, 'example.jpg')
- # 自定义样式
- style = 'style/oss-pic-style-w-100'
- # 图片处理
- bucket.get_object_to_file(key, new_pic, process=style)
- # 删除示例图片
- bucket.delete_object(key)
- # 清除本地文件
- os.remove(new_pic)
提示: get_object也支持图片处理功能
级联处理
- # -*- coding: utf-8 -*-
- import os
- import oss2
- endpoint = '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
- access_key_id = '<access_key_id>'
- access_key_secret = '<access_key_secret>'
- bucket_name = '<bucket_name>'
- key = 'example.jpg'
- new_pic = 'example-new.jpg'
- # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
- bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
- # 上传示例图片
- bucket.put_object_from_file(key, 'example.jpg')
- # 级联处理
- style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
- # 图片处理
- bucket.get_object_to_file(key, new_pic, process=style)
- # 删除示例图片
- bucket.delete_object(key)
- # 清除本地文件
- os.remove(new_pic)
提示: get_object也支持图片处理功能
图片处理工具