libvips/libvips

A fast image processing library with low memory needs.

libvips:图像处理库

它是什么

libvips 是一个用于处理图像的库——调整大小、裁剪、过滤、格式转换以及许多其他操作。其关键设计特点是需求驱动和水平线程化:它只执行你实际要求的工作,并将工作分配到多个 CPU 线程。README 声称这使得它比类似库更快、内存效率更高。

它是开源的,采用 LGPL-2.1-or-later 许可证。

它能做什么

  • 约 300 种操作,涵盖算术、直方图、卷积、形态学操作、频率滤波、颜色、重采样、统计等。
  • 广泛的数值范围:从 8 位整数到 128 位复数。
  • 每张图像任意数量的波段(例如,灰度、RGB、RGBA 或更多)。
  • 多种图像格式:JPEG、JPEG 2000、JPEG XL、TIFF、PNG、WebP、HEIC、AVIF、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM/PGM/PFM、CSV、GIF、Analyze、NIfTI、DeepZoom 和 OpenSlide。它还可以通过 ImageMagick 或 GraphicsMagick 加载图像,从而扩展对 DICOM 等格式的支持。

语言绑定

它内置了 C、C++ 和命令行界面的绑定。完整的社区绑定包括:

  • Ruby (ruby-vips)
  • Python (pyvips)
  • PHP (php-vips)
  • C# / .NET (NetVips)
  • Go (vips-gen)
  • Lua (lua-vips)
  • Crystal (crystal-vips)
  • Elixir (vix)
  • Java (vips-ffm)
  • Nim (libvips-nim)
  • Rust (vips-rs)

谁在使用它

使用 libvips 作为图像处理引擎的知名项目:

  • Mastodon(社交网络)
  • sharp(Node.js 图像库)
  • imgproxy
  • wsrv.nl
  • bimg
  • Ruby on Rails(Active Storage)
  • CarrierWave
  • MediaWiki

libvips 的官方 GUI 是 nip4,被描述为“电子表格和照片编辑器的奇怪组合”。

安装

  • 类 Unix 系统(包括 macOS):可通过大多数包管理器获取软件包。
  • Windows:在项目的 GitHub 发布中提供预构建二进制文件。
  • 详细的安装说明在 libvips 网站上。

从源码构建

要求:

  • Meson 构建系统(版本 0.56 或更高)
  • Meson 的后端:ninja、Visual Studio 或 XCode
  • 核心依赖:build-essential、pkg-config、libglib2.0-dev、libexpat1-dev

基本构建步骤:

cd libvips-x.y.z
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install

你可以使用诸如 -Dnsgif=false 或 -Dmagick=disabled 之类的标志切换功能和依赖(参见 meson_options.txt)。安装后,可以使用 pytest 运行更全面的测试套件。

可选依赖

libvips 会自动启用它在系统上找到的库的支持。关键依赖包括:

  • libjpeg(或 mozjpeg / libjpeg-turbo)— JPEG
  • libultrahdr — UltraHDR 图像
  • libexif — JPEG 中的 EXIF 元数据
  • librsvg — SVG 加载(回退到 ImageMagick)
  • libraw — 相机 RAW 加载(回退到 ImageMagick)
  • PDFium 或 poppler-glib — PDF 加载(回退到 ImageMagick)
  • cgif — GIF 保存(回退到 ImageMagick)
  • libarchive — 通过 dzsave 创建图像金字塔
  • libtiff — TIFF
  • fftw3 — 傅里叶变换
  • lcms2 — ICC 配置文件操作
  • libpng — PNG(回退到 spng)
  • libimagequant 或 quantizr — 8 位调色板 PNG/GIF 写入
  • ImageMagick 或 GraphicsMagick — 广泛的格式支持(README 警告启用此功能对不受信任的图像有安全影响)
  • pangocairo — 文本渲染
  • highway — SIMD 加速(回退到 orc-0.4)
  • matio — Matlab 文件
  • cfitsio — FITS 图像
  • libwebp — WebP
  • libniftiio — NIfTI 图像
  • OpenEXR — 读取 OpenEXR(不支持写入)
  • OpenJPEG — JPEG 2000
  • libjxl — JPEG XL
  • OpenSlide — 虚拟幻灯片格式(Aperio、Hamamatsu、Leica、MIRAX、Sakura、Trestle、Ventana)
  • libheif — HEIC 和 AVIF(需要 libheif 使用适当的编解码器构建)

总结

libvips 是一个成熟、广泛采用的图像处理库,通过需求驱动、线程化执行优先考虑速度和低内存使用。它支持大量格式和操作,提供大多数主要语言的绑定,并被知名项目用于生产环境。通过包管理器安装很容易,使用 Meson 从源码构建也很简单。

相关

  • 项目
  • 项目
  • 项目
  • 项目