libvips/libvips

A fast image processing library with low memory needs.

libvips: 画像処理ライブラリ

それは何か

libvips は、画像の処理(リサイズ、クロップ、フィルタリング、形式変換、その他多くの操作)を行うためのライブラリです。その主要な設計特性は、デマンド駆動で水平スレッド化されていることです。つまり、実際に要求した作業のみを行い、その作業を複数の CPU スレッドに分割します。README は、これにより類似のライブラリと比較して高速でメモリ効率が良いと主張しています。

オープンソースであり、LGPL-2.1-or-later ライセンスです。

できること

  • 約 300 の操作:算術、ヒストグラム、畳み込み、モルフォロジー操作、周波数フィルタリング、色、リサンプリング、統計など。
  • 広い数値範囲:8 ビット整数から 128 ビット複素数まで。
  • 画像ごとの任意のバンド数(例:グレースケール、RGB、RGBA など)。
  • 多くの画像形式:JPEG、JPEG 2000、JPEG XL、TIFF、PNG、WebP、HEIC、AVIF、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM/PGM/PFM、CSV、GIF、Analyze、NIfTI、DeepZoom、OpenSlide。また、ImageMagick または GraphicsMagick を介して画像を読み込むこともでき、DICOM などの形式のサポートが拡張されます。

言語バインディング

C、C++、およびコマンドラインインターフェースの組み込みバインディングが付属しています。完全なコミュニティバインディングは以下にあります:

  • Ruby (ruby-vips)
  • Python (pyvips)
  • PHP (php-vips)
  • C# / .NET (NetVips)
  • Go (vips-gen)
  • Lua (lua-vips)
  • Crystal (crystal-vips)
  • Elixir (vix)
  • Java (vips-ffm)
  • Nim (libvips-nim)
  • Rust (vips-rs)

誰が使っているか

libvips を画像処理エンジンとして使用している注目すべきプロジェクト:

  • Mastodon(ソーシャルネットワーク)
  • sharp(Node.js 画像ライブラリ)
  • imgproxy
  • wsrv.nl
  • bimg
  • Ruby on Rails(Active Storage)
  • CarrierWave
  • MediaWiki

libvips の公式 GUI は nip4 で、「スプレッドシートとフォトエディタの奇妙な組み合わせ」と説明されています。

インストール

  • Unix 系システム(macOS を含む):ほとんどのパッケージマネージャーでパッケージが利用可能です。
  • Windows:プロジェクトの GitHub リリースで事前ビルド済みバイナリが提供されています。
  • 詳細なインストールノートは libvips ウェブサイトにあります。

ソースからのビルド

要件:

  • Meson ビルドシステム(バージョン 0.56 以降)
  • Meson のバックエンド:ninja、Visual Studio、または XCode
  • コア依存関係:build-essential、pkg-config、libglib2.0-dev、libexpat1-dev

基本的なビルド手順:

cd libvips-x.y.z
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install

-Dnsgif=false や -Dmagick=disabled などのフラグで機能と依存関係を切り替えることができます(meson_options.txt を参照)。インストール後、pytest でより包括的なテストスイートを実行できます。

オプションの依存関係

libvips は、システムで見つけたライブラリのサポートを自動的に有効にします。主なものは次のとおりです:

  • libjpeg(または mozjpeg / libjpeg-turbo)— JPEG
  • libultrahdr — UltraHDR 画像
  • libexif — JPEG の EXIF メタデータ
  • librsvg — SVG 読み込み(ImageMagick にフォールバック)
  • libraw — カメラ RAW 読み込み(ImageMagick にフォールバック)
  • PDFium または poppler-glib — PDF 読み込み(ImageMagick にフォールバック)
  • cgif — GIF 保存(ImageMagick にフォールバック)
  • libarchive — dzsave による画像ピラミッド
  • libtiff — TIFF
  • fftw3 — フーリエ変換
  • lcms2 — ICC プロファイル操作
  • libpng — PNG(spng にフォールバック)
  • libimagequant または quantizr — 8 ビットパレット化 PNG/GIF 書き込み
  • ImageMagick または GraphicsMagick — 広範な形式サポート(README は、信頼できない画像に対してこれを有効にすることのセキュリティへの影響を警告しています)
  • pangocairo — テキストレンダリング
  • highway — SIMD アクセラレーション(orc-0.4 にフォールバック)
  • matio — Matlab ファイル
  • cfitsio — FITS 画像
  • libwebp — WebP
  • libniftiio — NIfTI 画像
  • OpenEXR — OpenEXR の読み取り(書き込みは不可)
  • OpenJPEG — JPEG 2000
  • libjxl — JPEG XL
  • OpenSlide — 仮想スライド形式(Aperio、Hamamatsu、Leica、MIRAX、Sakura、Trestle、Ventana)
  • libheif — HEIC および AVIF(適切なコーデックでビルドされた libheif が必要)

まとめ

libvips は、デマンド駆動のスレッド化された実行を通じて速度と低メモリ使用を優先する、成熟した広く採用されている画像処理ライブラリです。膨大な形式と操作をサポートし、主要な言語のバインディングを備え、有名なプロジェクトで本番環境に使用されています。パッケージマネージャーでのインストールは簡単で、Meson でのソースからのビルドも簡単です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト