阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

圖片處理

更新時間: Oct 19, 2018

圖片處理是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圖片處理結果。