libvips は、要求主導型の水平スレッド画像処理ライブラリです。同様のライブラリと比較して、libvips は高速に実行され、使用するメモリはほとんどありません。 libvips は、LGPL-2.1 以降に基づいてライセンスされています。
算術、ヒストグラム、畳み込み、形態学的演算、周波数フィルタリング、色、リサンプリング、統計などをカバーする約 300 の演算があります。 8 ビット整数から 128 ビット複素数までの広範囲の数値型をサポートします。画像には任意の数のバンドを含めることができます。 JPEG、JPEG 2000、JPEG XL、TIFF、PNG、WebP、HEIC、AVIF、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM / PGM / PFM、CSV、GIF、分析、NIfTI、DeepZoom、OpenSlide。また、ImageMagick や GraphicsMagick を介して画像をロードし、DICOM などの形式で動作させることもできます。
C、C++、およびコマンドラインのバインディングが付属しています。完全なバインディングは次のもので使用できます。
言語 | バインディング |
---|---|
ルビー | ルビー-vips |
パイソン | ピビプス |
PHP | php-vips |
C# / .NET | ネットビップス |
行く | ゴビップス |
ルア | ルア-vips |
結晶 | クリスタルビップス |
エリクサー | ヴィックス |
JVM | vips-ffm |
libvips は、以下によって画像処理エンジンとして使用されます。
シャープ (node.js 上) |
imgproxy |
ビムグ |
囲碁のシャープ |
ルビー・オン・レール |
キャリアウェーブ-vips |
メディアウィキ |
フォトフロー |
JVips |
そしてその他。公式の libvips GUI は nip2 で、スプレッドシートとフォト エディターを組み合わせた奇妙なものです。
macOS を含む、ほとんどの Unix 系オペレーティング システム用のパッケージがあります。パッケージマネージャーを確認してください。
リリースには Windows 用のバイナリが含まれています。
libvips Web サイトには、詳細なインストール ノートが記載されています。
libvips は、Meson ビルド システムのバージョン 0.56 以降を使用します。 Meson はバックエンドとしてninja
、Visual Studio、または XCode を使用できるため、それらのいずれかが必要になります。
libvips にはbuild-essential
、 pkg-config
、 libglib2.0-dev
、 libexpat1-dev
が必要です。 libvips のオプションの依存関係の完全なリストについては、以下の「依存関係」セクションを参照してください。
基本的な bash 補完はcompletions/
にあります。そこにある README を参照してください。
cd libvips-x.y.x
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
meson setup
の出力を注意深くチェックし、検索したいものがすべて見つかったことを確認します。 meson setup
に引数を追加して、ビルド構成を変更します。
-Dnsgif=false
のようなフラグを追加して、libvips オプションをオンまたはオフにします。libvips がサポートするすべてのビルド オプションのリストについては、 meson_options.txt
参照してください。
-Dmagick=disabled
のようなフラグを追加して、libvips の依存関係をオンまたはオフにします。すべての libvips の依存関係の概要については、 meson_options.txt
と以下のリストを参照してください。
ライブラリ パスにアーチ名を含めたくない場合は、Debian で--libdir lib
を追加する必要がある場合があります。
静的ビルドの場合は--default-library static
を追加します。
コンパイラを変更するには、たとえばCC=clang CXX=clang++ meson setup ...
を使用します。
別のビルド ディレクトリを用意し、任意の名前を選択することができます (たとえば、リリース用とデバッグ用など)。
libvips がインストールされたら、より包括的なテスト スイートを実行できます。 libvips ベース ディレクトリでpytest
を使用します。
適切なバージョンが見つかった場合、libvips は次のライブラリのサポートを自動的に追加します。パッケージは通常pkg-config
で見つかるので、それが機能していることを確認してください。
IJG JPEG ライブラリと互換性のあるもの。可能であればmozjpeg
使用してください。別のオプションはlibjpeg-turbo
です。
利用可能な場合、libvips は JPEG ファイルの EXIF メタデータのサポートを追加します。
通常のSVGローダー。これが存在しない場合、vips は代わりに imagemagick 経由で SVG をロードしようとします。
存在する場合、libvips は PDFium を使用して PDF をロードしようとします。事前に構築された pdfium バイナリを以下からダウンロードします。
https://github.com/bblanchon/pdfium-binaries
libvips インストール プレフィックスに解凍します。次に例を示します。
cd ~/vips
tar xf ~/pdfium-linux.tgz
次のようにpdfium.pc
を作成します (バージョン番号を更新します)。
VIPSHOME=/home/john/vips
cat > $VIPSHOME/lib/pkgconfig/pdfium.pc << EOF
prefix=$VIPSHOME
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: pdfium
Description: pdfium
Version: 4290
Requires:
Libs: -L${libdir} -lpdfium
Cflags: -I${includedir}
EOF
PDFium が検出されない場合、libvips は代わりにpoppler-glib
を探します。
glib API を備えた Poppler PDF レンダラー。これが存在しない場合、vips は imagemagick 経由で PDF をロードしようとします。
利用可能な場合、libvips は GIF を cgif で保存します。これが存在しない場合、vips は代わりに imagemagick 経由で GIF を保存しようとします。
利用可能な場合、 libvips はdzsave
を使用してイメージ ピラミッドを作成するためのサポートを追加します。
TIFFライブラリです。 JPEG および ZIP 圧縮をサポートして構築する必要があります。 3.4b037 以降は問題ないことがわかっています。
libvips がこのライブラリを見つけると、それをフーリエ変換に使用します。
vips_icc_import()
、 vips_icc_export()
、およびvips_icc_transform()
が存在する場合は、ICC プロファイルを使用して画像を操作するために使用できます。
存在する場合、libvips は libspng を使用して PNG ファイルをロードおよび保存します。そうでない場合は、標準の libpng パッケージが検索されます。
これらの量子化パッケージのいずれかが存在する場合、libvips は 8 ビットのパレット化された PNG および GIF を書き込むことができます。
利用可能な場合、libvips は、libMagick でサポートされるすべてのイメージ ファイル タイプの読み込みと保存のサポートを追加します。ロードとセーブを個別に有効または無効にできます。
Imagemagick 6.9 以降は、 --with-modules
を使用してビルドする必要があります。パッケージ化された IM のほとんどはそうだと思います。
たとえば、Web サーバーなどで信頼できないイメージを含む libvips を使用する場合は、このような大きな攻撃対象領域を持つパッケージを有効にすることによるセキュリティへの影響を考慮する必要があります。
利用可能な場合、libvips はテキスト レンダリングのサポートを追加します。 pkg-config --list-all
には pangocairo パッケージが必要です。
libvips が存在する場合、SIMD を使用して一部の操作が高速化されます。そうでない場合は、orc-0.4 パッケージが検索されます。
利用可能な場合、vips は Matlab 保存ファイルからイメージをロードできます。
利用可能な場合、vips は FITS 画像をロードできます。
利用可能な場合、vips は WebP 画像をロードおよび保存できます。
利用可能な場合、vips は NIfTI 画像をロードおよび保存できます。
利用可能な場合、libvips は OpenEXR イメージを直接読み取ります (残念ながら書き込みはしません)。
利用可能な場合、libvips は JPEG2000 画像の読み取りと書き込みを行います。
利用可能な場合、libvips は JPEG-XL 画像の読み取りと書き込みを行います。
利用可能な場合、libvips は OpenSlide でサポートされる仮想スライド ファイル (Aperio、Hamamatsu、Leica、MIRAX、Sakura、Trestle、Ventana) をロードできます。
利用可能な場合、libvips は HEIC および AVIF イメージをロードおよび保存できます。 libheif は (同様に) 正しいデコーダーとエンコーダーを使用して構築する必要があります。例:
$ heif-convert --list-decoders
HEIC decoders:
- libde265 = libde265 HEVC decoder, version 1.0.9
AVIF decoders:
- dav1d = dav1d v6.6.0
- aom = AOMedia Project AV1 Decoder v3.5.0
$ heif-enc --list-encoders
HEIC encoders:
- x265 = x265 HEVC encoder (3.5+1-f0c1022b6) [default]
AVIF encoders:
- aom = AOMedia Project AV1 Encoder v3.5.0 [default]
- svt = SVT-AV1 encoder v1.1.0
- rav1e = Rav1e encoder
このプロジェクトは、貢献してくださるすべての人々のおかげで存在します。
私たちはスポンサーから多大な資金援助を受けてきました。どうもありがとうございます!