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

圖片處理

更新時間: Oct 30, 2018

OSS圖片處理,是OSS對外提供的海量、安全、低成本、高可靠的圖片處理。使用者將原始圖片上傳保存到OSS,通過簡單的 RESTful 介面,在任何時間、任何地點、任何互連網裝置上對圖片進行處理。圖片處理提供圖片處理介面,圖片上傳請使用上傳介面。基於OSS圖片處理,使用者可以搭建自己的圖片處理服務。

圖片處理基礎功能

OSS圖片處理提供以下功能:

圖片處理使用

圖片處理使用標準的 HTTP GET 請求來訪問,所有的處理參數是編碼在 URL 中的QueyString。

匿名訪問

如果圖片檔案(Object)的存取權限是 公共讀 ,如下表所示的許可權,則可以匿名訪問圖片服務。

Bucket許可權 Object許可權
公共讀私有寫(public-read)或
公共讀寫(public-read-write)
預設(default)
任意許可權 公共讀私有寫(public-read)或
公共讀寫(public-read-write)

通過如下格式的第三層網域名匿名訪問圖片處理:

  1. http://bucket.<endpoint>/object?x-oss-process=image/action,param_value
  • bucket:使用者的儲存空間(bucket)名稱
  • endpoint:使用者儲存空間所在資料中心的訪問網域名稱
  • object:使用者上傳在OSS上的圖片檔案
  • image:圖片處理保留標誌符
  • action:使用者對圖片做的操作,如縮放、裁剪、旋轉等
  • param:使用者對圖片做的操作所對應的參數

例如:

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

自訂樣式,使用如下格式的第三層網域名匿名訪問圖片處理:

  1. http://bucket.<endpoint>/object?x-oss-process=x-oss-process=style/name
  • style:使用者自訂樣式系統保留標誌符
  • name:自訂樣式名稱,即控制台定義樣式的 規則名

例如:

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

通過級聯處理,可以對一張圖片順序實施多個操作,格式如下:

  1. http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value/action,param_value/...

例如:

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

圖片服務也支援HTTPS訪問,例如:

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

授權訪問

對私有許可權的檔案(Object),如下表所示的許可權,必須通過授權才能訪問圖片服務。

Bucket許可權 Object許可權
私有讀寫(private) 預設許可權(default)
任意許可權 私有讀寫(private)

生成帶簽名的圖片處理的URL代碼如下:

  1. let OSS = require('ali-oss');
  2. let client = new OSS({
  3. accessKeyId: '<accessKeyId>',
  4. accessKeySecret: '<accessKeySecret>',
  5. bucket: '<bucketName>',
  6. endpoint: '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
  7. });
  8. // 過期時間10分鐘, 圖片處理式樣"image/resize,w_300"
  9. let signUrl = client.signatureUrl('example.jpg', {expires: 600, 'process' : 'image/resize,w_300'});
  10. console.log("signUrl="+signUrl);

提示:

  • 授權訪問支援 自訂樣式HTTPS級聯處理
  • 指定過期時間expires的單位是秒

SDK訪問

對於任意許可權的圖片檔案,都可以直接使用 SDK 訪問圖片、進行處理。

提示:

  • SDK處理圖片檔案支援 自訂樣式HTTPS級聯處理

基礎操作

圖片處理的基礎操作包括,獲取圖片資訊格式轉換縮放裁剪旋轉效果浮水印等。

  1. let OSS = require('ali-oss');
  2. let client = new OSS({
  3. accessKeyId: '<accessKeyId>',
  4. accessKeySecret: '<accessKeySecret>',
  5. bucket: '<bucketName>',
  6. endpoint: '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
  7. });
  8. // 縮放
  9. async function scale () {
  10. try {
  11. let result = await client.get('example.jpg', './example-resize.jpg', { process: 'image/resize,m_fixed,w_100,h_100'});
  12. } catch (e) {
  13. console.log(e);
  14. }
  15. }
  16. // 裁剪
  17. async function cut () {
  18. try {
  19. let result = await client.get('example.jpg', './example-crop.jpg', { process: 'image/crop,w_100,h_100,x_100,y_100,r_1'});
  20. } catch (e) {
  21. console.log(e)
  22. }
  23. }
  24. // 旋轉
  25. async function rotate () {
  26. try {
  27. let result = await client.get('example.jpg', './example-rotate.jpg', { process: 'image/rotate,90'});
  28. } catch (e) {
  29. console.log(e);
  30. }
  31. }
  32. // 銳化
  33. async function sharpen () {
  34. try {
  35. let result = yield client.get('example.jpg', './example-sharpen.jpg', { process: 'image/sharpen,100'});
  36. } catch (e) {
  37. console.log(e);
  38. }
  39. }
  40. // 浮水印
  41. async function watermark () {
  42. try {
  43. let result = yield client.get('example.jpg', './example-watermark.jpg', { process: 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'});
  44. } catch (e) {
  45. console.log(e);
  46. }
  47. }
  48. // 格式轉換
  49. async function format () {
  50. try {
  51. let result = await client.get('example.jpg', './example-format.jpg', { process: 'image/format,png'});
  52. } catch (e) {
  53. console.log(e);
  54. }
  55. }
  56. // 圖片資訊
  57. async function info () {
  58. try {
  59. let result = await client.get('example.jpg', './example-info.txt', {process: 'image/info'});
  60. } catch (e) {
  61. console.log(e);
  62. }
  63. }

自訂樣式

提示:需要事先到oss控制台添加自訂式樣example-sytle

  1. let OSS = require('ali-oss');
  2. let client = new OSS({
  3. accessKeyId: '<accessKeyId>',
  4. accessKeySecret: '<accessKeySecret>',
  5. bucket: '<bucketName>',
  6. endpoint: '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
  7. });
  8. // 自訂樣式
  9. async function style () {
  10. try {
  11. let result = await client.get('example.jpg', './example-custom-style.jpg', {process: 'style/example-sytle"'});
  12. } catch (e) {
  13. console.log(e);
  14. }
  15. }
  16. style();

級聯處理

  1. let OSS = require('ali-oss');
  2. let client = new OSS({
  3. accessKeyId: '<accessKeyId>',
  4. accessKeySecret: '<accessKeySecret>',
  5. bucket: '<bucketName>',
  6. endpoint: '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
  7. });
  8. // 級聯處理
  9. async function cascade () {
  10. try {
  11. let result = await client.get('example.jpg', './example-cascade.jpg', {process: 'image/resize,m_fixed,w_100,h_100/rotate,90'});
  12. } catch (e) {
  13. console.log(e);
  14. }
  15. }
  16. cascade();

圖片處理工具

  • 可視化圖片處理工具 ImageStyleViever ,可以直觀的看到OSS圖片處理的結果
  • OSS圖片處理的功能、使用示範 頁面