libvips 是一个需求驱动的水平线程图像处理库。与类似的库相比,libvips 运行速度快并且占用内存很少。 libvips 根据 LGPL-2.1 或更高版本获得许可。
它有大约 300 个运算,涵盖算术、直方图、卷积、形态运算、频率过滤、颜色、重采样、统计等。它支持多种数值类型,从 8 位 int 到 128 位复数。图像可以有任意数量的波段。它支持多种图像格式,包括 JPEG、JPEG 2000、JPEG XL、TIFF、PNG、WebP、HEIC、AVIF、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM / PGM / PFM、CSV、GIF、分析、NIfTI、DeepZoom 和 OpenSlide。它还可以通过 ImageMagick 或 GraphicsMagick 加载图像,使其能够使用 DICOM 等格式。
它附带了 C、C++ 和命令行的绑定。完整绑定可用于:
语言 | 装订 |
---|---|
红宝石 | 红宝石贵宾 |
Python | 皮维普斯 |
PHP | php-vips |
C#/.NET | 网络贵宾 |
去 | 政府官员 |
卢阿 | lua-vips |
水晶 | 水晶vips |
灵丹妙药 | 维克斯 |
虚拟机 | VIPS-FFM |
libvips 被用作图像处理引擎:
尖锐(在 Node.js 上) |
代理服务器 |
比姆格 |
锐利的围棋 |
红宝石 on Rails |
载波vips |
媒体维基 |
照片流 |
联合维普斯 |
和其他人。官方的 libvips GUI 是 nip2,它是电子表格和照片编辑器的奇怪组合。
有适用于大多数类 Unix 操作系统(包括 macOS)的软件包。检查你的包管理器。
发行版中有适用于 Windows 的二进制文件。
libvips 网站有详细的安装说明。
libvips 使用 Meson 构建系统,版本 0.56 或更高版本。 Meson 可以使用ninja
、 Visual Studio 或 XCode 作为后端,因此您还需要其中之一。
libvips 必须有build-essential
、 pkg-config
、 libglib2.0-dev
、 libexpat1-dev
。有关 libvips 可选依赖项的完整列表,请参阅下面的依赖项部分。
completions/
中有基本的 bash 补全,请参阅其中的自述文件。
cd libvips-x.y.x
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
仔细检查meson setup
的输出,并确保它找到了您想要它找到的所有内容。向meson setup
添加参数以更改构建配置。
添加-Dnsgif=false
等标志来打开和关闭 libvips 选项,请参阅meson_options.txt
以获取 libvips 支持的所有构建选项的列表。
添加-Dmagick=disabled
等标志来打开和关闭 libvips 依赖项,请参阅meson_options.txt
和下面的列表,了解所有 libvips 依赖项的摘要。
如果您不希望库路径中包含体系结构名称,您可能需要在 Debian 上添加--libdir lib
。
添加--default-library static
进行静态构建。
使用例如CC=clang CXX=clang++ meson setup ...
来更改编译器。
您可以有一个替代的构建目录,选择您喜欢的任何名称,例如一个用于发布,一个用于调试。
安装 libvips 后,您可以运行更全面的测试套件。在 libvips 基目录中使用pytest
。
如果找到合适的版本,libvips 将自动添加对以下库的支持。软件包通常是通过pkg-config
找到的,因此请确保它正常工作。
任何与 IJG JPEG 库兼容的内容。如果可以的话,使用mozjpeg
。另一个选择是libjpeg-turbo
。
如果可用,libvips 添加了对 JPEG 文件中的 EXIF 元数据的支持。
通常的 SVG 加载器。如果不存在,vips 将尝试通过 imagemagick 加载 SVG。
如果存在,libvips 将尝试使用 PDFium 加载 PDF。从以下位置下载预构建的 pdfium 二进制文件:
https://github.com/bblanchon/pdfium-binaries
解压到 libvips 安装前缀,例如:
cd ~/vips
tar xf ~/pdfium-linux.tgz
像这样创建一个pdfium.pc
(更新版本号):
VIPSHOME=/home/john/vips
cat > $VIPSHOME/lib/pkgconfig/pdfium.pc << EOF
prefix=$VIPSHOME
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: pdfium
Description: pdfium
Version: 4290
Requires:
Libs: -L${libdir} -lpdfium
Cflags: -I${includedir}
EOF
如果未检测到 PDFium,libvips 将查找poppler-glib
。
Poppler PDF 渲染器,带有 glib API。如果不存在,vip 将尝试通过 imagemagick 加载 PDF。
如果可用,libvips 将使用 cgif 保存 GIF。如果不存在,vips 将尝试通过 imagemagick 保存 gif。
如果可用,libvips 添加了对使用dzsave
创建图像金字塔的支持。
TIFF 库。它需要支持 JPEG 和 ZIP 压缩。 3.4b037 及更高版本已知是可以的。
如果 libvips 找到该库,它将使用它进行傅里叶变换。
如果存在, vips_icc_import()
、 vips_icc_export()
和vips_icc_transform()
可用于通过 ICC 配置文件操作图像。
如果存在,libvips 将使用 libspng 加载和保存 PNG 文件。如果没有,它将寻找标准的 libpng 包。
如果存在这些量化包之一,libvips 可以编写 8 位调色板化的 PNG 和 GIF。
如果可用,libvips 添加了对加载和保存所有 libMagick 支持的图像文件类型的支持。您可以单独启用和禁用加载和保存。
Imagemagick 6.9+ 需要使用--with-modules
构建。我认为大多数打包的即时消息都是如此。
如果您打算将 libvips 与不受信任的图像一起使用(例如在 Web 服务器中),您应该考虑启用具有如此大攻击面的包的安全隐患。
如果可用,libvips 添加对文本渲染的支持。您需要pkg-config --list-all
中的包 pangocairo 。
如果存在,libvips 将加速 SIMD 的某些操作。如果没有,它将寻找 orc-0.4 包。
如果可用,vip 可以从 Matlab 保存文件加载图像。
如果可用,vip 可以加载 FITS 图像。
如果可用,vip 可以加载和保存 WebP 图像。
如果可用,vip 可以加载和保存 NIfTI 图像。
如果可用,libvips 将直接读取(但遗憾的是不能写入)OpenEXR 图像。
如果可用,libvips 将读取和写入 JPEG2000 图像。
如果可用,libvips 将读取和写入 JPEG-XL 图像。
如果可用,libvips 可以加载 OpenSlide 支持的虚拟幻灯片文件:Aperio、Hamamatsu、Leica、MIRAX、Sakura、Trestle 和 Ventana。
如果可用,libvips 可以加载和保存 HEIC 和 AVIF 图像。您的 libheif(反过来)需要使用正确的解码器和编码器来构建。您可以检查例如:
$ heif-convert --list-decoders
HEIC decoders:
- libde265 = libde265 HEVC decoder, version 1.0.9
AVIF decoders:
- dav1d = dav1d v6.6.0
- aom = AOMedia Project AV1 Decoder v3.5.0
$ heif-enc --list-encoders
HEIC encoders:
- x265 = x265 HEVC encoder (3.5+1-f0c1022b6) [default]
AVIF encoders:
- aom = AOMedia Project AV1 Encoder v3.5.0 [default]
- svt = SVT-AV1 encoder v1.1.0
- rav1e = Rav1e encoder
这个项目的存在要感谢所有做出贡献的人。
我们得到了赞助商慷慨的财政支持。非常感谢!