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
這個項目的存在要感謝所有做出貢獻的人。
我們得到了贊助商慷慨的財政支持。非常感謝!