libvips:一個圖像處理庫
Introduction
libvips是一個demand-driven,水平線程化的圖像處理庫。與類似的庫相比,libvips運行速度快,占用的內存很少。libvips是根據lgpl2.1+授權的。
它有大約300個操作,包括算術、直方圖、卷積、形態運算、頻率濾波、顏色、重采樣、統計等。它支持大量的數字類型,從8位int到128-bitcomplex。圖像可以有任意數量的帶。它支持多種圖像格式,包括JPEG、TIFF、PNG、WebP、HEIC、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM/PGM/PFM、CSV、GIF、Analyze、NIfTI、DeepZoom和OpenSlide。它還可以通過ImageMagick或GraphicsMagick來加載圖像,讓它可以處理DICOM之類的格式。
它帶有C、C++和command-line的綁定。完整的綁定可用於Ruby、Python、PHP、C#/.NET、Go和Lua。libvips被夏普(sharp)(onnode.js))、bimg、sharp for Go、rubyonrails、carrierwave-vips、mediawiki、PhotoFlow等用作圖像處理引擎。libvips的官方GUI是nip2,它是電子表格和照片編輯器的奇怪組合。
Install
大多數Unix-like操作系統都有軟件包,包括macOS。檢查包管理器。
版本中有Windows的二進制文件。
libvips網站有詳細的安裝說明。
從源tarball構建libvips
我們在發行版中保留了pre-bakedtarballs。
Untar,那么在libvips目錄中,您應該能夠:
./configure
仔細檢查configure
結尾的摘要。libvips必須有build-essential
、pkg-config
、libglib2.0-dev
、libexpat1-dev
。
您需要dev包來支持所需的文件格式。對於基本的jpeg和tiff支持,您需要libtiff5-dev
、libjpeg-turbo8-dev
和libgsf-1-dev
。有關libvips可以配置為使用的內容的完整列表,請參閱下面的依賴項部分。
一旦configure
看起來正常,用通常的方法編譯和安裝:
make
sudo make install
默認情況下,這將把文件安裝到/usr/local
。
Testing
運行測試套件:
make check
使用以下內容運行特定測試:
pytest test/test-suite/test_foreign.py -k test_tiff
從git構建libvips
使用以下內容克隆最新源:
git clone git://github.com/libvips/libvips.git
從git構建需要更多的包——至少需要gtk-doc
和gobject-introspection
,請參閱下面的依賴項部分。例如:
brew install gtk-doc
然后生成生成系統:
./autogen.sh --prefix=/home/john/vips
Debug build:
CFLAGS="-g -Wall" CXXFLAGS="-g -Wall" \ ./configure --prefix=/home/john/vips --enable-debug make make install
Dependencies
libvips必須有libglib2.0-dev
和libexpat1-dev
。其他依賴項是可選的。
Optional dependencies
如果找到合適的版本,libvips將自動添加對以下庫的支持。請參見./configure --help
,以獲取控制庫檢測的一組標志。包通常帶有pkg-config
,因此請確保這是有效的。
像giflib和nifti這樣的庫不使用pkg-config
,因此libvips還會在默認路徑和$prefix
中查找它們。如果您在不同的位置安裝了這些庫的自己版本,libvips將看不到它們。使用開關對libvips進行如下配置:
./configure --prefix=/Users/john/vips \ --with-giflib-includes=/opt/local/include \ --with-giflib-libraries=/opt/local/lib
or perhaps:
CFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \ CXXFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \ ./configure --prefix=/Users/john/vips
libjpeg
IJG JPEG庫。如果可以,請使用-turbo
版本。
libexif
如果可用,libvips添加了對JPEG文件中EXIF元數據的支持。
giflib
標准的gif加載程序。如果不存在,VIP將嘗試通過imagemagick加載GIF。
librsvg
通常的SVG加載程序。如果不存在,VIP將嘗試通過imagemagick加載SVG。
PDFium
如果存在,libvips將嘗試通過PDFium加載pdf。此庫必須由https://github.com/jcupitt/docker-builds/tree/master/pdfium打包
如果沒有檢測到PDFium,libvips將轉而查找poppler-glib。
poppler-glib
Poppler PDF渲染器,帶有一個glibapi。如果不存在,VIP將嘗試通過imagemagick加載PDF。
libgsf-1
如果可用,libvips添加了對使用dzsave
創建圖像金字塔的支持。
libtiff
TIFF庫。它需要建立在支持JPEG和ZIP壓縮的基礎上。3.4b037和更高版本是可以的。
fftw3
如果libvips找到了這個庫,它就會將其用於傅立葉變換。
lcms2
如果存在,vips_icc_import()
、vips_icc_export()
和vips_icc_transform()
可用於使用ICC配置文件轉換圖像。
libpng
如果存在,libvips可以加載和保存png文件。
libimagequant
如果存在,libvips可以編寫8位palette-isedpng。
ImageMagick,或可選的GraphicsMagick
{lib560可用於加載圖像,則添加對lib560文件類型的支持。使用--with-magickpackage=GraphicsMagick
來構建graphicsmagick。
ImageMagick6.9+需要使用--with-modules
構建。我認為,大多數打包的im都是。
如果您要將libvips與不受信任的映像一起使用,例如在web服務器中,您應該考慮啟用具有如此大的攻擊面的包的安全隱患。
pangoft2
如果可用,libvips會添加對文本呈現的支持。您需要pkg-config --list-all
中的pangoft2包。
orc-0.4
如果可用,vips將使用這個run-time編譯器加速某些操作。
matio
如果可用,VIP可以從Matlab保存文件加載圖像。
cfitsio
如果有,貴賓可以加載FITS圖像。
libwebp
如果可用,VIP可以加載和保存WebP圖像。
libniftiio
如果可用,VIP可以加載和保存NIfTI圖像。
OpenEXR
如果可以的話,libvips將直接讀取(遺憾的是不能寫入)OpenEXR圖像。
OpenSlide
如果可用,libvips可以加載OpenSlide-supported虛擬幻燈片文件:Aperio、濱松、徠卡、MIRAX、Sakura、Trestle和Ventana。
libheif
如果可用,libvips可以加載和保存HEIC圖像。