图片处理是OSS提供的海量、安全、低成本、高可靠的图片处理服务。原始图片上传到OSS后,您可以通过简单的RESTful接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。

图片处理支持的参数请参见处理参数

使用图片处理参数处理图片

  • 使用单个图片处理参数处理图片并保存为本地图片
    const OSS = require('ali-oss');
    
    const client = new OSS({
      bucket: '<Your BucketName>',
      // region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
      region: '<Your Region>',
      // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
      accessKeyId: '<Your AccessKeyId>',
      accessKeySecret: '<Your AccessKeySecret>',
    });
    // 将指定图片文件缩放为固定宽高100 px后保存在本地。
    async function scale () {
      try {
        let result = await client.get('<OSSObjectName>', '<LocalFileName>', { process: 'image/resize,m_fixed,w_100,h_100'});
      } catch (e) {
        console.log(e);
      }
    }
  • 使用多个图片处理参数处理图片并保存为本地图片
    使用多个图片处理参数处理图片时,多个参数之间以正斜线(/)分隔。
    const OSS = require('ali-oss');
    
    const client = new OSS({
      bucket: '<Your BucketName>',
      // region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
      region: '<Your Region>',
      // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
      accessKeyId: '<Your AccessKeyId>',
      accessKeySecret: '<Your AccessKeySecret>',
    });
    
    async function cascade () {
      try {
        // 将指定图片文件缩放为固定宽高100 px后,再旋转90°,之后保存在本地。
        let result = await client.get('<OSSObjectName>', '<LocalFileName>', {process: 'image/resize,m_fixed,w_100,h_100/rotate,90'});
      } catch (e) {
        console.log(e);
      }
    }
    cascade();

使用图片样式处理图片

您可以将多个图片处理参数封装在一个样式中,之后使用样式批量处理图片。详情请参见图片样式。以下代码展示了使用图片样式处理图片:
const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  // region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
  region: '<Your Region>',
  // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
});

async function style () {
  try {
    // 使用指定图片样式处理图片后保存在本地。
    let result = await client.get('<OSSObjectName>', '<LocalFileName>', {process: 'style/<yourCustomStyleName>'});
  } catch (e) {
    console.log(e);
  }
}
style();

图片处理持久化

以下代码用于图片处理持久化:

const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  // region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
  region: '<Your Region>',
  // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
});
// 原图名称。若图片不在Bucket根目录,需携带文件访问路径,例如example/example.jpg。
const sourceImage = '<SourceObjectName>';
// 指定处理后的图片名称。
const targetImage = '<TargetObjectName>';
async function processImage(processStr, targetBucket) {
  const result = await client.processObjectSave(
    sourceImage,
    targetImage,
    processStr,
    targetBucket
  );
  console.log(result.res.status);
}

// 指定图片处理方式及处理后图片保存的Bucket。
processImage("image/resize,m_fixed,w_100,h_100", "<target bucket>")

生成带图片处理参数的文件签名URL

私有文件的访问URL带有签名。OSS不支持在带签名的URL后直接添加图片处理参数。如果您想要对私有文件进行图片处理,需要将图片处理参数加入到签名中,相关的代码示例如下:
const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  // region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
  region: '<Your Region>',
  // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
});
// 生成带图片处理参数的文件签名URL,过期时间10分钟。
let signUrl = client.signatureUrl('<OSSObjectName>', {expires: 600, 'process' : 'image/resize,w_300'});
console.log("signUrl="+signUrl);

图片处理工具

可视化图片处理工具 ImageStyleViewer ,可以直观的看到OSS图片处理的结果。