具有低内存需求的快速图像处理库

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

原文地址:https://www.cnblogs.com/ybqjymy/p/13723599.html