全部產品
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. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  10. $accessKeyId = "<yourAccessKeyId>";
  11. $accessKeySecret = "<yourAccessKeySecret>";
  12. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  13. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  14. $bucket= "<yourBucketName>";
  15. $object = "<yourObjectName>";
  16. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  17. // 生成一個帶簽名的URL,有效期間是3600秒,可以直接使用瀏覽器訪問。
  18. $timeout = 3600;
  19. $options = array(
  20. OssClient::OSS_PROCESS => "image/resize,m_lfit,h_100,w_100" );
  21. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
  22. print("rtmp url: \n" . $signedUrl);

SDK訪問

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

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

基礎操作

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

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  10. $accessKeyId = "<yourAccessKeyId>";
  11. $accessKeySecret = "<yourAccessKeySecret>";
  12. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  13. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  14. $bucket = "<yourBucketName>";
  15. $object = "<yourObjectName>";
  16. $download_file = "download.jpg";
  17. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  18. // 上傳樣本圖片。
  19. $ossClient->uploadFile($bucket, $object, "example.jpg");
  20. // 圖片縮放
  21. $options = array(
  22. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  23. OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100" );
  24. $ossClient->getObject($bucket, $object, $options);
  25. // 圖片裁剪
  26. $options = array(
  27. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  28. OssClient::OSS_PROCESS => "image/crop,w_100,h_100,x_100,y_100,r_1" );
  29. $ossClient->getObject($bucket, $object, $options);
  30. // 圖片旋轉
  31. $options = array(
  32. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  33. OssClient::OSS_PROCESS => "image/rotate,90" );
  34. $ossClient->getObject($bucket, $object, $options);
  35. // 圖片銳化
  36. $options = array(
  37. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  38. OssClient::OSS_PROCESS => "image/sharpen,100" );
  39. $ossClient->getObject($bucket, $object, $options);
  40. // 圖片浮水印
  41. $options = array(
  42. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  43. OssClient::OSS_PROCESS => "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ" );
  44. $ossClient->getObject($bucket, $object, $options);
  45. // 圖片格式轉換
  46. $options = array(
  47. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  48. OssClient::OSS_PROCESS => "image/format,png" );
  49. $ossClient->getObject($bucket, $object, $options);
  50. // 獲取圖片資訊。
  51. $options = array(
  52. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  53. OssClient::OSS_PROCESS => "image/info" );
  54. $ossClient->getObject($bucket, $object, $options);
  55. // 刪除樣本圖片。
  56. $ossClient->deleteObject($bucket, $object);

自訂樣式

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

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  10. $accessKeyId = "<yourAccessKeyId>";
  11. $accessKeySecret = "<yourAccessKeySecret>";
  12. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  13. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  14. $bucket = "<yourBucketName>";
  15. $object = "<yourObjectName>";
  16. $download_file = "download.jpg";
  17. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  18. // 上傳樣本圖片。
  19. $ossClient->uploadFile($bucket, $object, "example.jpg");
  20. // 自訂樣式。
  21. $style = "style/oss-pic-style-w-300";
  22. $options = array(
  23. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  24. OssClient::OSS_PROCESS => $style);
  25. $ossClient->getObject($bucket, $object, $options);
  26. // 刪除樣本圖片。
  27. $ossClient->deleteObject($bucket, $object);

級聯處理

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

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  10. $accessKeyId = "<yourAccessKeyId>";
  11. $accessKeySecret = "<yourAccessKeySecret>";
  12. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  13. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  14. $bucket = "<yourBucketName>";
  15. $object = "<yourObjectName>";
  16. $download_file = "download.jpg";
  17. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
  18. // 上傳樣本圖片。
  19. $ossClient->uploadFile($bucket, $object, "example.jpg");
  20. // 級聯處理。
  21. $style = "image/resize,m_fixed,w_100,h_100/rotate,90";
  22. $options = array(
  23. OssClient::OSS_FILE_DOWNLOAD => $download_file,
  24. OssClient::OSS_PROCESS => $style);
  25. $ossClient->getObject($bucket, $object, $options);
  26. // 刪除樣本圖片。
  27. $ossClient->deleteObject($bucket, $object);

圖片處理工具

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