全部产品
阿里云办公

图片处理

更新时间:2018-07-20 14:06:20

图片处理是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图片处理结果。

本文导读目录