Cloudinary logo

Cloudinary

云端图片/视频资源管理平台,提供上传、变换、优化、AI 处理和全球 CDN 分发的一站式解决方案

精选工具图片优化性能优化CDN媒体管理

业界领先的云端媒体管理平台,将复杂的图片/视频处理抽象为简单的 URL 参数或 SDK 调用,支持 100+ 种图片格式和 AI 驱动的自动化处理能力,是企业级媒体处理的首选方案。

Cloudinary

云端图片/视频资源管理平台,提供上传、变换、优化、AI 处理和全球 CDN 分发的一站式解决方案

技术简介说明

Cloudinary 是业界领先的云端媒体管理平台,由 Itai Lahan 和 Gilad Rom 于 2012 年创立。它提供从媒体上传、存储、管理到变换、优化、分发的完整生命周期解决方案。Cloudinary 的核心价值在于将复杂的图片/视频处理抽象为简单的 URL 参数或 SDK 调用,开发者无需维护任何图片处理基础设施。

Cloudinary 的技术栈包括:自研的图片/视频处理引擎、全球多 CDN 分发网络(Akamai、Fastly、CloudFront)、AI/ML 驱动的自动化处理能力(背景移除、自动标签、智能裁剪、质量评估)、以及完善的 DAM(数字资产管理)系统。它支持 100+ 种图片格式和所有主流视频格式的变换和优化。

截至 2025-2026 年,Cloudinary 推出了 Cloudinary 2.0 版本(前端 monorepo 架构),统一了 SDK 体验。AI 功能持续增强,包括 Gemini Nano 集成(Pixel 设备)、自动标签增强、AI 图像生成等。Cloudinary 是企业级媒体处理的首选方案,被大量 Fortune 500 公司和电商平台采用。

基本信息

  • 官网https://cloudinary.com/
  • GitHubhttps://github.com/cloudinary(组织仓库,包含多个 SDK 和工具)
    • cloudinary_frontend_monorepo(Cloudinary 2.0 前端 SDK)
    • cloudinary_npm(Node.js SDK)
    • cloudinary-react(React SDK)
  • License:MIT(SDK 开源);服务端为 SaaS 商业产品
  • 最新版本:Cloudinary 2.0(前端 SDK 统一版本);cloudinary_npm v2.x(Node.js SDK,2025)
  • 主要维护者/公司:Cloudinary Ltd.(Dror Gilon - CEO,Itai Lahan - CTO)

快速上手

安装

# Node.js SDK(传统)
npm install cloudinary
 
# Cloudinary 2.0 前端 SDK(推荐)
npm install @cloudinary/url-gen
 
# React SDK
npm install @cloudinary/react
 
# Next.js SDK
npm install @cloudinary/next
 
# Vue SDK
npm install @cloudinary/vue
 
# Angular SDK
npm install @cloudinary/angular

基础配置

// Node.js SDK 配置
import { v2 as cloudinary } from 'cloudinary';
 
cloudinary.config({
  cloud_name: 'your_cloud_name',
  api_key: 'your_api_key',
  api_secret: 'your_api_secret',
  secure: true
});
 
// Cloudinary 2.0 SDK 配置
import { Cloudinary } from '@cloudinary/url-gen';
 
const cld = new Cloudinary({
  cloud: { cloudName: 'your_cloud_name' },
  url: { secure: true }
});

最小示例

URL 变换方式

原始图片:
https://res.cloudinary.com/demo/image/upload/sample.jpg

缩放 + WebP + 质量 80:
https://res.cloudinary.com/demo/image/upload/w_400,h_300,f_webp,q_80/sample.jpg

自动格式 + 自动质量:
https://res.cloudinary.com/demo/image/upload/f_auto,q_auto/sample.jpg

AI 背景移除:
https://res.cloudinary.com/demo/image/upload/background_removal:removebg/sample.jpg

智能裁剪:
https://res.cloudinary.com/demo/image/upload/c_fill,w_400,h_400,g_auto/sample.jpg

Cloudinary 2.0 SDK 方式

import { Cloudinary } from '@cloudinary/url-gen';
import { fill } from '@cloudinary/url-gen/actions/resize';
import { format, quality } from '@cloudinary/url-gen/qualifiers';
import { autoGravity } from '@cloudinary/url-gen/qualifiers/gravity';
 
const cld = new Cloudinary({ cloud: { cloudName: 'demo' } });
 
const img = cld
  .image('sample')
  .resize(fill().width(400).height(300).gravity(autoGravity()))
  .format(format('auto'))
  .quality(quality('auto'));
 
console.log(img.toURL());
// https://res.cloudinary.com/demo/image/upload/c_fill,w_400,h_300,g_auto,f_auto,q_auto/sample

React 组件方式

import { Cloudinary } from '@cloudinary/url-gen';
import { AdvancedImage, responsive, lazyload, placeholder } from '@cloudinary/react';
import { fill } from '@cloudinary/url-gen/actions/resize';
import { format, quality } from '@cloudinary/url-gen/qualifiers';
 
const cld = new Cloudinary({ cloud: { cloudName: 'demo' } });
 
function App() {
  const img = cld
    .image('sample')
    .resize(fill().width(800).height(600))
    .format(format('auto'))
    .quality(quality('auto'));
 
  return (
    <AdvancedImage
      cldImg={img}
      plugins={[responsive(), lazyload(), placeholder()]}
      alt="Sample image"
    />
  );
}

核心概念与架构

核心架构

Cloudinary 采用四层架构设计:

  1. 上传与存储层:支持直接上传、远程 URL 抓取、CMS 集成导入;存储在 Cloudinary 云端或外部存储(S3、GCS)
  2. 处理引擎层:自研图片/视频处理引擎,支持 100+ 种变换操作,在多个处理区域实时执行
  3. AI/ML 层:AI 背景移除、自动标签、智能裁剪、质量评估、超分辨率、AI 图像生成
  4. 分发层:多 CDN 架构(Akamai、Fastly、CloudFront),全球边缘节点自动缓存

工作原理

  1. 上传:客户端或服务端通过 API 上传图片/视频
  2. 存储:资源存储在 Cloudinary 云端,分配唯一 public_id
  3. 变换:通过 URL 参数或 SDK 指定变换操作,Cloudinary 实时处理
  4. 优化:自动格式选择(f_auto)、自动质量调整(q_auto
  5. 缓存:处理后的资源缓存在全球 CDN 节点
  6. 分发:后续请求直接返回 CDN 缓存

URL 结构

https://res.cloudinary.com/<cloud_name>/<resource_type>/<delivery_type>/<transformations>/<version>/<public_id>.<format>

# 示例
https://res.cloudinary.com/demo/image/upload/w_400,f_auto,q_auto/sample.jpg

# 参数说明
# - cloud_name: 账户标识
# - resource_type: image / video / raw
# - delivery_type: upload / private / authenticated / fetch
# - transformations: 变换参数链(如 w_400,h_300,c_fill)
# - public_id: 资源唯一标识
# - format: 输出格式(jpg / webp / avif / auto)

信用额度系统

Cloudinary 采用**信用额度(Credits)**作为统一计费单位:

资源类型消耗规则
存储1 GB/月 = 1 信用额度
变换1,000 次变换 = 1 信用额度
带宽1 GB 带宽 = 1 信用额度
AI 功能按操作消耗(如背景移除每次 1 信用额度)

核心概念

  • Public ID:资源的唯一标识符,用于构建 URL
  • Transformation:变换操作(裁剪、缩放、格式、质量等)
  • Named Transformations:预定义的变换组合,复用简化 URL
  • Upload Preset:上传配置预设,控制上传行为
  • Context & Metadata:资源的上下文信息和自定义元数据
  • Responsive Images:自动 srcset 生成和 DPR 适配

核心特性

  • 全格式支持:100+ 种图片格式和所有主流视频格式的变换和优化
  • URL 变换:丰富的变换参数通过 URL 实时执行,无需预生成
  • AI 自动化
    • AI 背景移除/替换(removebg、cloudinary AI)
    • AI 自动标签(Gemini Nano 集成)
    • AI 智能裁剪(auto gravity)
    • AI 质量评估和优化
    • AI 超分辨率
    • AI 图像生成(文本到图片)
  • 自动优化f_auto 自动格式选择、q_auto 自动质量调整
  • 响应式图片:自动 srcset 生成、DPR 适配、客户端提示(Client Hints)
  • 视频处理:转码、裁剪、叠加、字幕、HLS/DASH 自适应流
  • DAM 系统:数字资产管理(企业版)、协作、审批工作流
  • 多 CDN 分发:Akamai + Fastly + CloudFront,全球低延迟
  • 安全:签名 URL、令牌认证、IP 白名单、SSE 加密
  • 丰富的 SDK:Node.js、React、Vue、Angular、Next.js、Python、Ruby、Java、PHP、.NET 等 10+ 种

生态图

SDK 生态

SDK包名平台
Node.jscloudinary (v2.x)服务端
Cloudinary 2.0 前端@cloudinary/url-gen通用
React@cloudinary/react前端
Next.js@cloudinary/next前端
Vue@cloudinary/vue前端
Angular@cloudinary/angular前端
Pythoncloudinary服务端
Rubycloudinary服务端
Javacloudinary服务端
PHPcloudinary/cloudinary_php服务端
.NETCloudinaryDotNet服务端
Androidcloudinary_android移动端
iOScloudinary_ios移动端

构建工具集成

工具集成方式说明
Next.js@cloudinary/next官方 SDK,集成 next/image
Gatsbygatsby-plugin-cloudinaryGatsby 图片插件
Nuxt@nuxtjs/cloudinaryNuxt 模块
Strapi@strapi/provider-upload-cloudinaryStrapi 上传提供者
WordPressCloudinary WordPress 插件WordPress 媒体替换
ShopifyCloudinary Shopify App电商图片管理

外部存储集成

存储说明
Cloudinary 内置默认选项
AWS S3外部存储代理
Google Cloud Storage外部存储代理
远程 URLfetch 模式代理

社区生态

  • GitHub Stars:SDK 合计 5,000+ stars
  • npm 周下载量:cloudinary ~500,000+/周,@cloudinary/url-gen ~200,000+/周
  • 客户规模:大量 Fortune 500 公司、知名电商平台
  • 合作伙伴:与 Adobe、Shopify、Contentful 等集成

适用场景

  • 企业级媒体管理:大量图片/视频的统一存储、管理和分发
  • 电商平台:商品图片自动优化、AI 标签、智能裁剪
  • 社交媒体应用:用户上传图片的自动处理、头像裁剪、封面图生成
  • 新闻/出版平台:媒体资源管理、版权追踪、协作审批
  • SaaS 应用:快速集成媒体处理能力,无需自建基础设施
  • 在线教育:视频课程处理、字幕生成、自适应流
  • 营销活动:快速生成多尺寸、多格式的营销素材

开发与工程化

开发流程

// 完整的上传和处理流程
import { v2 as cloudinary } from 'cloudinary';
 
// 1. 上传
const uploadResult = await cloudinary.uploader.upload('local-image.jpg', {
  public_id: 'products/product-001',
  folder: 'my-app',
  transformation: { width: 2000, height: 2000, crop: 'limit' },
  eager: [
    { width: 800, height: 600, crop: 'fill', format: 'webp', quality: 'auto' },
    { width: 400, height: 400, crop: 'thumb', gravity: 'face', format: 'auto' },
    { width: 200, height: 200, crop: 'thumb', format: 'auto', quality: 60 }
  ],
  context: { alt: 'Product photo', caption: 'Summer collection 2026' },
  tags: ['product', 'summer-2026']
});
 
console.log('Uploaded:', uploadResult.secure_url);
 
// 2. 生成变换 URL
const url = cloudinary.url('my-app/products/product-001', {
  width: 800,
  height: 600,
  crop: 'fill',
  gravity: 'auto',
  format: 'auto',
  quality: 'auto',
  effect: 'sharpen'
});
 
// 3. 获取资源信息
const info = await cloudinary.api.resource('my-app/products/product-001');
console.log('Size:', info.bytes, 'Format:', info.format);

构建部署

Next.js 集成

// next.config.js
module.exports = {
  images: {
    remotePatterns: [
      {
        protocol: 'https',
        hostname: 'res.cloudinary.com',
        pathname: '/your_cloud_name/**'
      }
    ]
  }
}
 
// 使用 @cloudinary/next
import { CldImage } from '@cloudinary/next';
 
export default function ProductPage({ product }) {
  return (
    <CldImage
      src={`products/${product.id}`}
      width={800}
      height={600}
      crop="fill"
      gravity="auto"
      format="auto"
      quality="auto"
      alt={product.name}
    />
  );
}

环境变量配置

# .env.local
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloud_name
# API Key/Secret 仅服务端使用
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

CI/CD 集成

# GitHub Actions: 媒体资源自动化
name: Media Pipeline
on: [push]
jobs:
  process:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: node scripts/sync-media.js
        env:
          CLOUDINARY_API_KEY: ${{ secrets.CLOUDINARY_API_KEY }}
          CLOUDINARY_API_SECRET: ${{ secrets.CLOUDINARY_API_SECRET }}
          CLOUDINARY_CLOUD_NAME: ${{ secrets.CLOUDINARY_CLOUD_NAME }}

工程化最佳实践

  1. 使用自动优化:始终使用 f_autoq_auto
  2. 预生成变换(Eager):为高频访问的图片预生成常用变换
  3. 命名变换:将常用变换组合定义为命名变换,简化 URL
  4. 缓存控制:合理设置 Cache-Control
  5. 错误处理:妥善处理上传失败、变换错误等情况
  6. 使用 Context:为资源添加元数据,方便管理和搜索
// 命名变换配置
await cloudinary.api.create_transformation('product_thumb', {
  width: 400, height: 400, crop: 'thumb', gravity: 'auto',
  format: 'auto', quality: 'auto'
});
 
// 使用命名变换
const url = cloudinary.url('product-001', {
  transformation: 'product_thumb'
});

性能与安全

性能特点

  • 全球分发:多 CDN(Akamai/Fastly/CloudFront)全球覆盖
  • 缓存命中:处理后的资源缓存延迟 < 50ms
  • 预生成变换:Eager transformations 避免首次请求延迟
  • 自动优化f_auto + q_auto 典型减少 40-70% 文件体积
  • 响应式:自动生成 srcset,浏览器选择最优尺寸

安全注意事项

  • 签名 URL:防止变换参数被篡改
  • 令牌认证:基于时间戳的令牌验证
  • IP 白名单:限制 API 访问来源
  • 上传签名:服务端签名验证上传请求
  • SSE 加密:静态数据加密存储
// 签名 URL 示例
const signedUrl = cloudinary.url('private-image', {
  sign_url: true,
  type: 'authenticated',
  width: 800
});
 
// 上传签名
const signature = cloudinary.utils.api_sign_request(
  { timestamp: Math.round(Date.now() / 1000), folder: 'uploads' },
  cloudinary.config().api_secret
);

合规认证

  • SOC 2 Type II:服务组织安全控制
  • GDPR:欧盟数据保护合规
  • CCPA:加州消费者隐私法
  • ISO 27001:信息安全管理体系

已知性能瓶颈

  • 信用额度消耗:变换次数直接消耗信用额度,大规模使用成本高
  • AI 功能延迟:背景移除、智能裁剪等 AI 操作增加处理时间
  • 视频处理:大规模视频转码消耗大量资源
  • 冷启动:长时间未访问的图片重新处理有延迟
  • API 限流:管理 API 有调用频率限制

技术对比

与同类服务对比

特性CloudinaryImageKitCloudflare Imagesimgix
免费层✅ 25 信用额度/月✅ 20 GB 带宽✅ 5,000 变换❌ 无
付费起步~$89/月(Plus)$9/月按量(无月费)$25-75/月
定价模型信用额度(共享)带宽为主按图 + 按交付信用额度
变换计费消耗信用额度无限免费包含消耗信用额度
格式支持100+ 种主流格式主流格式主流格式
AI 功能✅ 丰富(背景移除、标签、生成)✅ AI 编辑套件✅ 有限
DAM✅ 企业版完整✅ 全计划可用仅企业版
视频处理✅ 完整✅ 完整✅ 企业版
CDN多 CDNCloudFrontCloudflareFastly
SDK10+ 种11 种有限有限
自定义域名企业版Pro 起$75 计划起

成本对比(100K 图片 / 500 万次月交付)

服务商预估月费每千次交付成本
Cloudflare Images~$55~$0.01
ImageKit Pro~$130-170~$0.025-0.035
Cloudinary Plus~$200-250~$0.04-0.05
imgix$75+更高

选择建议

  • 选择 Cloudinary:需要最全面的功能集、企业级 DAM、丰富的 AI 功能
  • 选择 ImageKit:预算有限、需要 DAM、变换量大
  • 选择 Cloudflare Images:追求最低成本、已有 Cloudflare 生态
  • 选择 imgix:需要高级 URL 变换、已有 Fastly CDN

最佳实践

生产环境建议

  1. 始终使用自动优化
// 推荐:自动格式 + 自动质量
const img = cld.image('sample')
  .format(format('auto'))
  .quality(quality('auto'));
 
// URL 方式
// f_auto,q_auto
  1. 预生成高频变换
// Eager transformations:上传时预生成
await cloudinary.uploader.upload('image.jpg', {
  eager: [
    { width: 1200, format: 'auto', quality: 'auto' },
    { width: 800, format: 'auto', quality: 'auto' },
    { width: 400, format: 'webp', quality: 80 }
  ]
});
  1. 使用 Client Hints
<!-- 启用 Client Hints 让服务端自动适配 DPR -->
<img
  src="https://res.cloudinary.com/demo/image/upload/w_auto:100,dpr_auto/f_auto/sample.jpg"
  sizes="100vw"
/>
  1. 响应式图片最佳实践
<AdvancedImage
  cldImg={cld.image('sample')
    .resize(fill().width(800))
    .format(format('auto'))
    .quality(quality('auto'))}
  plugins={[responsive(), lazyload(), placeholder({ mode: 'blur' })]}
  alt="Responsive image"
/>

常见陷阱

  1. 信用额度管理不当
// 问题:变换消耗信用额度,大规模使用成本高
// 解决:预生成变换、使用命名变换、合理缓存
 
// 命名变换(只计数一次)
await cloudinary.api.create_transformation('standard_thumb', {
  width: 400, height: 400, crop: 'fill', format: 'auto', quality: 'auto'
});
  1. API Secret 暴露
// 错误:API Secret 暴露到前端
const cloudinary = new Cloudinary({
  cloud: { cloudName: 'demo', apiKey: '...', apiSecret: '...' }  // ❌
});
 
// 正确:前端只用 cloudName,敏感操作用服务端 SDK
const cloudinary = new Cloudinary({
  cloud: { cloudName: 'demo' }  // ✅
});
  1. 忽略缓存策略:未设置合理的缓存时间导致频繁回源
  2. 未使用 Eager:高频访问的图片未预生成,首次请求延迟高
  3. 过度使用 AI 功能:AI 操作消耗额外信用额度,成本可能失控

技术局限与边界

已知限制

  1. 信用额度模型复杂:存储、变换、带宽共享同一信用额度,难以预测成本
  2. 成本较高:大规模使用时成本显著高于 Cloudflare Images 或 ImageKit
  3. 免费层有限:25 信用额度/月对小型项目可能不够
  4. DAM 限企业版:完整 DAM 功能需要企业版订阅
  5. 自定义域名:自定义域名仅限企业版
  6. 供应商锁定:迁移到其他服务需要重构 URL 和集成
  7. AI 功能额外计费:背景移除等 AI 功能消耗额外信用额度

不适用场景

  • 极低成本需求:大规模交付时成本远高于 Cloudflare Images
  • 纯本地处理:需要离线图片处理应使用 Sharp
  • 纯开源方案:Cloudinary 核心是商业 SaaS
  • 极简需求:简单图片处理用 Sharp 或 Imagemin 更轻量

权衡取舍

  • 功能全面 vs 成本:功能最丰富,但大规模使用成本高
  • 便利性 vs 控制权:全托管服务方便,但依赖第三方
  • AI 能力 vs 额外成本:AI 功能强大,但消耗额外信用额度

迁移注意事项

从 Cloudinary 迁移:

  • URL 结构完全不同,需要重新映射变换参数
  • Public ID 和文件夹结构需要迁移
  • 签名 URL 和认证配置需要重新设置
  • 建议分批迁移,先切换非关键资源
  • 考虑使用 unpic 抽象 CDN 差异,降低迁移成本

学习资源

官方文档

教程

社区资源

2026 年现状

最新版本

Cloudinary 在 2025-2026 年处于活跃开发状态:

  • Cloudinary 2.0:前端 SDK 统一为 monorepo 架构(@cloudinary/url-gen 为核心)
  • AI 功能增强:Gemini Nano 集成、AI 标签增强、AI 图像生成
  • Node.js SDK v2.x:更新到现代 TypeScript,支持 ESM
  • Pixel 设备 AI:利用 Google Gemini Nano 在 Pixel 设备上进行端侧图像处理

发展趋势

  1. AI 驱动:从工具型平台向 AI 媒体平台转型
  2. 前端 SDK 统一:Cloudinary 2.0 统一了所有前端 SDK 体验
  3. 边缘处理:更多变换在边缘节点执行
  4. 视频 AI:AI 视频编辑、自动高光检测、智能字幕
  5. 企业级 DAM:增强协作、审批、版本控制能力

社区活跃度

  • GitHub Stars:SDK 合计 5,000+ stars
  • npm 周下载量:cloudinary ~500,000+/周
  • 客户规模:大量 Fortune 500 公司
  • 开发者满意度:功能全面但成本是主要痛点

未来路线图

  • AI 功能持续扩展:更多 AI 编辑和生成能力
  • Cloudinary 2.0 完善:更多框架的 SDK 适配
  • 成本优化:可能调整定价模型应对竞争
  • 边缘计算增强:更多处理在边缘节点完成
  • 开发者体验:改进文档、CLI 工具、调试工具

Cloudinary 作为企业级媒体处理的行业标准,提供最全面的功能集,但成本是主要考虑因素。对于预算充足、需要完整媒体管理能力的企业,Cloudinary 仍然是首选方案。