このプロジェクトについて

pyvipsは、cffiで実装されたlibvips画像処理ライブラリのPythonバインディングです。libvipsをラップすることでPythonプログラムからその操作を利用できるようにし、Windows、macOS、Linux上のpython3とpypy3でリークなしにvipsテストスイートを通過します。 仕組み pyvipsを使うプログラムは画像を直接操作しません。代わりに、ソース画像を基に構築された画像処理操作のパイプラインを作成します。パイプの終端が出力先に接続されると、パイプライン全体が一度に実行され、画像をセクションごとにソースから出力先へ並列にストリーミングします。並列であるため高速で、画像全体をメモリに保持する必要がないため軽量です。READMEではlibvipsの速度とメモリのベンチマークを引用しており、大きなTIFFを読み込み、10%縮小し、シャープ化して再度保存するテストは通常ImageMagickより約3倍高速で、約5倍少ないメモリで済みます。 インストール 最も簡単な方法はバイナリパッケージです: pip install "pyvips[binary]"。これは最も一般的に必要とされるライブラリを含む自己完結型パッケージをインストールし、Linux、Windows、macOSを含むほとんどのプラットフォームで、64ビットと32ビットのx64およびARM CPUに対応するはずです。同梱のlibvipsにはPDF読み込みやOpenSlideサポートなどの機能はありません。 あるいは、libvipsを別途インストールします。ライブラリ検索パス上にlibvips共有ライブラリ、バージョン8.2以降が必要ですが、すべての機能には少なくとも8.9が必要です。例えばLinuxでは、apt install libvips-devの後にpip install pyvips。Python 3.11以降では先にvenvが必要です。Homebrewを使うmacOSでは: brew install vips python pkg-config、その後pip install pyvips。Windowsでは、libvipsウェブサイトからコンパイル済みバイナリをダウンロードし、64ビットPythonを使用し、vips-dev-x.y\binをPATHに追加するか、プログラム内からPATHを設定します(Python 3.8以降ではos.add_dll_directoryを使用)。Condaパッケージには対応するlibvipsバイナリが含まれています: conda install --channel conda-forge pyvips。 ビルドモード libvipsの開発ヘッダーがインストールされていて、動作するCコンパイラが利用可能な場合、モジュールはcffi APIモードを使用してPython用のlibvipsバイナリ拡張をビルドします。バイナリ拡張をビルドできない場合はcffi ABIモードにフォールバックし、これはlibvips共有ライブラリのみを必要とします。起動に時間がかかり、実行速度は通常約20%遅くなります。APIモードが使用されているかどうかはpyvips.API_modeで確認できます。 例 サンプルプログラムは、シーケンシャルアクセスでJPGを読み込み、すべての緑ピクセルの値を2倍にし(image *= [1, 2, 1])、畳み込みマスクでシャープ化し、画像をファイルシステムに書き戻します。 開発ノート READMEには、ローカルの編集可能インストール、toxですべてのテストを実行、pytestでテストスイートまたは特定のテストを実行、パフォーマンステストの実行、flake8によるスタイルチェック、sphinx-buildでHTMLドキュメントを生成するためのコマンドが記載されています。型ヒントはPEP 561スタブファイル(pyvips/__init__.pyi)を介して提供され、mypyで使用できますが、メソッドはlibvipsオプション用の任意のキーワード引数を受け入れ、ヒントで完全にカバーされない場合があります。メンテナンスタスクには、libvips GIRからのenumの再生成、型スタブの再生成、autodocsの再生成、バージョン番号の更新、PyPIパッケージのビルドとアップロードが含まれます。