UStackUStack
imgproxy icon

imgproxy

imgproxy 是一款自托管图片处理服务器,支持按需调整、转换和优化远程图片,通过基于 URL 的变换交付图片版本,并让处理始终在自有基础设施上完成。

imgproxy

什么是 imgproxy?

imgproxy 是一款独立的实时图片处理服务器。它通过在图片 URL 中应用处理参数,对远程图片进行调整大小、裁剪、旋转、加水印、添加滤镜和转换,因此应用无需提前预生成每一种图片变体。

它旨在运行在你自己的基础设施上,并与你自己的图片存储配合使用。该产品提供开源核心项目,以及一个 Pro 版本,后者增加了高级功能,例如更多处理选项、视频、PDF 和 Photoshop 文档的预览生成,以及其他增强功能。

主要功能

  • 实时图片调整大小和转换 — 在请求时直接提供所需的精确图片变体,而不是存储大量预先生成的文件。
  • 基于 URL 的处理选项 — 直接在图片 URL 中指定变换和输出格式,适合由 CDN 和应用驱动的图片交付工作流。
  • 自托管部署 — 在你自己的服务器或基础设施上运行 imgproxy,而不是将图片发送到第三方 SaaS 服务。
  • 图片请求安全控制 — 包括防护 image bombs、通过 URL 签名防止未授权变换,以及通过 HTTP header 进行授权,以帮助保护缓存交付路径。
  • 广泛的图片处理支持 — 开源版本支持调整大小、裁剪、旋转、加水印、滤镜、色彩配置文件剥离、元数据剥离、PNG 量化和智能裁剪。
  • 开源核心与 Pro 功能分层 — 开源版本发布在 GitHub 上,而 Pro 版本增加了高级压缩、动态水印、视频预览、对象检测、高级智能裁剪以及其他高级功能。

如何使用 imgproxy

典型部署通常从在你自己的机器或托管环境中将 imgproxy 安装为 Docker 镜像或 Linux 包开始。然后你可以上传图片或让它指向存储中的图片,按需配置服务器,并通过在 URL 中添加变换参数来请求处理后的图片。

在实际使用中,应用或前端会生成包含所需尺寸、格式和变换设置的图片 URL,而 imgproxy 会按需返回处理结果。

使用场景

  • Web 应用的响应式图片交付 — 在请求时生成不同尺寸和格式的图片,满足需要多种变体的布局。
  • 私有基础设施图片处理 — 当你不希望将资源发送到外部服务时,将图片处理保留在自己的环境中。
  • 高并发图片工作负载的成本控制 — 用自托管服务器替代托管式图片 SaaS,让处理和扩缩容决策始终由你掌控。
  • 有安全要求的图片处理 — 使用签名 URL 和请求授权来减少滥用及未授权的变换请求。
  • 高级媒体工作流 — 使用 Pro 功能处理视频预览、PDF 或 Photoshop 文档预览、高级压缩和动态水印等任务。

常见问题

imgproxy 是自托管的吗? 是的。资料将 imgproxy 描述为运行在你自己基础设施上的自托管图片处理服务器。

我需要预先生成图片变体吗? 不需要。imgproxy 旨在根据 URL 参数按需处理和转换图片。

有开源版本吗? 有。该产品采用 open core 模式:开源版本发布在 GitHub 上,同时也有闭源的 Pro 版本。

支持哪些格式和变换? 资料提到了 JPEG、PNG、GIF、WebP、AVIF 和 JPEG XL 等常见格式,以及调整大小、裁剪、旋转、加水印、滤镜和若干优化功能。

imgproxy 如何部署? 它以 Docker 镜像和 Linux 包的形式分发,并设计为可运行在几乎任何托管服务或本地机器上。

替代方案

  • 其他自托管图片处理器 — 类似工具,专注于在你自己的基础设施内运行图片变换,通常具有不同的配置模型或功能集。
  • 托管式图片转换服务 — 由 SaaS 平台代为处理调整大小和转换,通常比自托管服务器的运维控制更少。
  • CDN 图片缩放功能 — 一些内容分发网络提供的边缘图片处理,可简化部署,但可能无法提供相同的处理深度或部署控制。
  • 应用内自定义图片处理流水线 — 直接构建在应用技术栈中的库或服务,适合较小规模工作负载,但需要更多应用侧维护。
imgproxy | UStack