zoukankan      html  css  js  c++  java
  • 具有低内存需求的快速图像处理库

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

  • 相关阅读:
    2016 Multi-University Training Contest 1 solutions BY HIT
    Unicode 码表
    用 lambda 表达式 对 List 进行排序
    Linux的sed命令介绍
    Linux下的NTP服务搭建
    Linux网络配置(ip命令及配置文件)
    Linux的bash脚本编程(if语句和循环语句)
    Linux新手必须掌握的命令(2)
    Linux的文件查找
    bash中的变量
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13723599.html
Copyright © 2011-2022 走看看