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图像。