全部產品
Search
文件中心

Object Storage Service:圖片處理

更新時間:Aug 30, 2018

圖片處理是OSS提供的海量、安全、低成本、高可靠的圖片處理服務。原始圖片上傳到OSS後,您可以通過簡單的RESTful介面,在任何時間、任何地點、任何互連網裝置上對圖片進行處理。

圖片處理的詳細資料請參見OSS圖片處理指南

圖片處理功能

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

圖片處理使用

圖片處理使用標準的HTTP GET請求。您可以在URL的QueryString中設定處理參數。

如果圖片檔案的存取權限為私有讀寫,必須通過授權才能進行訪問。

匿名訪問

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

  1. http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=image/<yourAction>,<yourParamValue>
參數 描述
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>,<yourParamValue1>/<yourAction2>,<yourParamValue2>/...

例如:

  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. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. String objectName = "<yourObjectName>";
  8. // 建立OSSClient執行個體。
  9. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  10. // 設定圖片處理樣式。
  11. String style = "image/resize,m_fixed,w_100,h_100/rotate,90";
  12. // 指定過期時間為10分鐘。
  13. Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 );
  14. GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
  15. req.setExpiration(expiration);
  16. req.setProcess(style);
  17. URL signedUrl = ossClient.generatePresignedUrl(req);
  18. System.out.println(signedUrl);
  19. // 關閉OSSClient。
  20. ossClient.shutdown();

SDK訪問

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

SDK處理圖片檔案支援自訂樣式、HTTPS和級聯處理。圖片處理的完整代碼請參見:GitHub

基礎操作

以下代碼展示了圖片處理的基礎操作:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. String objectName = "<yourObjectName>";
  8. // 建立OSSClient執行個體。
  9. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  10. // 縮放
  11. String style = "image/resize,m_fixed,w_100,h_100";
  12. GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
  13. request.setProcess(style);
  14. ossClient.getObject(request, new File("example-resize.jpg"));
  15. // 裁剪
  16. style = "image/crop,w_100,h_100,x_100,y_100,r_1";
  17. request = new GetObjectRequest(bucketName, objectName);
  18. request.setProcess(style);
  19. ossClient.getObject(request, new File("example-crop.jpg"));
  20. // 旋轉
  21. style = "image/rotate,90";
  22. request = new GetObjectRequest(bucketName, objectName);
  23. request.setProcess(style);
  24. ossClient.getObject(request, new File("example-rotate.jpg"));
  25. // 銳化
  26. style = "image/sharpen,100";
  27. request = new GetObjectRequest(bucketName, objectName);
  28. request.setProcess(style);
  29. ossClient.getObject(request, new File("example-sharpen.jpg"));
  30. // 浮水印
  31. style = "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ";
  32. request = new GetObjectRequest(bucketName, objectName);
  33. request.setProcess(style);
  34. ossClient.getObject(request, new File("example-watermark.jpg"));
  35. // 格式轉換
  36. style = "image/format,png";
  37. request = new GetObjectRequest(bucketName, objectName);
  38. request.setProcess(style);
  39. ossClient.getObject(request, new File("example-format.png"));
  40. // 獲取圖片資訊
  41. style = "image/info";
  42. request = new GetObjectRequest(bucketName, objectName);
  43. request.setProcess(style);
  44. ossClient.getObject(request, new File("example-info.txt"));
  45. // 關閉OSSClient。
  46. ossClient.shutdown();

自訂樣式

以下代碼用於自訂圖片樣式:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. String objectName = "<yourObjectName>";
  8. // 建立OSSClient執行個體。
  9. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  10. // 自訂樣式。
  11. String style = "style/<yourCustomStyleName>";
  12. GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
  13. request.setProcess(style);
  14. ossClient.getObject(request, new File("example-new.jpg"));
  15. // 關閉OSSClient。
  16. ossClient.shutdown();

級聯處理

以下代碼用於級聯處理圖片:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. String objectName = "<yourObjectName>";
  8. // 建立OSSClient執行個體。
  9. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  10. // 級聯處理。
  11. String style = "image/resize,m_fixed,w_100,h_100/rotate,90";
  12. GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
  13. request.setProcess(style);
  14. ossClient.getObject(request, new File("example-new.jpg"));
  15. // 關閉OSSClient。
  16. ossClient.shutdown();

圖片處理工具

您可以通過可視化圖片處理工具ImageStyleViever直觀地看到OSS圖片處理結果。