具有低內存需求的快速圖像處理庫


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-essentialpkg-configlibglib2.0-devlibexpat1-dev

您需要dev包來支持所需的文件格式。對於基本的jpeg和tiff支持,您需要libtiff5-devlibjpeg-turbo8-devlibgsf-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-docgobject-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-devlibexpat1-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圖像。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM