圖片處理是OSS提供的海量、安全、低成本、高可靠的圖片處理服務。原始圖片上傳到OSS後,您可以通過簡單的RESTful介面,在任何時間、任何地點、任何互連網裝置上對圖片進行處理。
圖片處理的詳細資料請參見OSS圖片處理指南。
圖片處理功能
OSS圖片處理提供以下功能:
圖片處理使用
圖片處理使用標準的HTTP GET請求。您可以在URL的QueryString中設定處理參數。
如果圖片檔案的存取權限為私有讀寫,必須通過授權才能進行訪問。
匿名訪問
您可以通過如下格式的第三層網域名匿名訪問處理後的圖片:
http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=image/<yourAction>,<yourParameValue>
參數 | 描述 |
---|---|
bucket | 儲存空間名稱 |
endpoint | 儲存空間所在地域的訪問網域名稱 |
object | 圖片檔案名稱 |
image | 圖片處理的保留標誌符 |
action | 對圖片做的操作,如縮放、裁剪、旋轉等 |
param | 對圖片做的操作所對應的參數 |
基礎操作
例如,將圖縮略成寬度為100,高度按比例處理:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
自訂樣式
使用如下格式的第三層網域名匿名訪問圖片處理:
http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=style/<yourStyleName>
- style:自訂樣式的保留標誌符。
- yourStyleName:自訂樣式名稱,即通過控制台自訂樣式的規則名稱。
例如:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/oss-pic-style-w-100
級聯處理
通過級聯處理,可以對一張圖片順序進行多個操作,格式如下:
http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=image/<yourAction1>,<yourParameValue1>/<yourAction2>,<yourParameValue2>/...
例如:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100/rotate,90
支援HTTPS訪問
圖片服務支援HTTPS訪問,例如:
https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
授權訪問
授權訪問支援自訂樣式、HTTPS和級聯處理。
以下代碼用於生成帶簽名的圖片處理URL:
# -*- coding: utf-8 -*-
import oss2
# Endpoint以杭州為例,其它Region請按實際情況填寫。
endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
access_key_id = '<yourAccessKeyId>'
access_key_secret = '<yourAccessKeySecret>'
bucket_name = '<yourBucketName>'
key = 'example.jpg'
# 建立儲存空間執行個體,所有檔案相關的方法都需要通過儲存空間執行個體來調用。
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)
SDK訪問
對於任意許可權的圖片檔案,都可以直接使用SDK訪問和處理。
SDK處理圖片檔案支援自訂樣式、HTTPS和級聯處理。圖片處理的完整代碼請參見:GitHub。
基礎操作
get_object和get_object_to_file支援圖片處理。
以下代碼展示了圖片處理的基礎操作:
# -*- coding: utf-8 -*-
import os
import oss2
# Endpoint以杭州為例,其它Region請按實際情況填寫。
endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
access_key_id = '<yourAccessKeyId>'
access_key_secret = '<yourAccessKeySecret>'
bucket_name = '<yourBucketName>'
key = 'example.jpg'
new_pic = 'example-new.jpg'
# 建立儲存空間執行個體,所有檔案相關的方法都需要通過儲存空間執行個體來調用。
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)
自訂樣式
以下代碼用於自訂圖片樣式:
# -*- coding: utf-8 -*-
import os
import oss2
# Endpoint以杭州為例,其它Region請按實際情況填寫。
endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
access_key_id = '<yourAccessKeyId>'
access_key_secret = '<yourAccessKeySecret>'
bucket_name = '<yourBucketName>'
key = 'example.jpg'
new_pic = 'example-new.jpg'
# 建立儲存空間執行個體,所有檔案相關的方法都需要通過儲存空間執行個體來調用。
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)
級聯處理
以下代碼用於級聯處理圖片:
# -*- coding: utf-8 -*-
import os
import oss2
# Endpoint以杭州為例,其它Region請按實際情況填寫。
endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
access_key_id = '<yourAccessKeyId>'
access_key_secret = '<yourAccessKeySecret>'
bucket_name = '<yourBucketName>'
key = 'example.jpg'
new_pic = 'example-new.jpg'
# 建立儲存空間執行個體,所有檔案相關的方法都需要通過儲存空間執行個體來調用。
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)
圖片處理工具
您可以通過可視化圖片處理工具ImageStyleViever直觀地看到OSS圖片處理結果。