À propos du projet

pyvips est une liaison Python pour la bibliothèque de traitement d'images libvips, implémentée avec cffi. Elle encapsule libvips afin que les programmes Python puissent utiliser ses opérations, et elle passe la suite de tests vips sans fuites sous python3 et pypy3 sur Windows, macOS et Linux. Fonctionnement Les programmes utilisant pyvips ne manipulent pas directement les images. Ils créent plutôt des pipelines d'opérations de traitement d'images construits sur une image source. Lorsque l'extrémité du pipeline est connectée à une destination, l'ensemble du pipeline s'exécute d'un coup, en diffusant l'image en parallèle de la source vers la destination, section par section. Parce qu'il est parallèle, il est rapide, et parce qu'il n'a pas besoin de garder des images entières en mémoire, il est léger. Le README cite le benchmark de vitesse et de mémoire de libvips, où un test qui charge un grand TIFF, réduit de 10 %, accentue la netteté et enregistre à nouveau est typiquement environ 3 fois plus rapide qu'ImageMagick et nécessite environ 5 fois moins de mémoire. Installation La voie la plus rapide est le paquet binaire : pip install "pyvips[binary]". Cela installe un paquet autonome avec les bibliothèques les plus couramment nécessaires et devrait fonctionner sur la plupart des plateformes, y compris Linux, Windows et macOS, avec des processeurs 64 et 32 bits x64 et ARM. Le libvips intégré ne dispose pas de fonctionnalités telles que le chargement PDF et la prise en charge d'OpenSlide. Alternativement, installez libvips séparément. Vous avez besoin de la bibliothèque partagée libvips dans votre chemin de recherche de bibliothèques, version 8.2 ou ultérieure, bien qu'au moins 8.9 soit requis pour toutes les fonctionnalités. Sous Linux, par exemple, apt install libvips-dev suivi de pip install pyvips ; avec Python 3.11 et versions ultérieures, un venv est nécessaire au préalable. Sous macOS avec Homebrew : brew install vips python pkg-config, puis pip install pyvips. Sous Windows, téléchargez un binaire précompilé depuis le site web de libvips, utilisez Python 64 bits, et soit ajoutez vips-dev-x.y\bin à PATH, soit définissez PATH depuis le programme (en utilisant os.add_dll_directory sur Python 3.8+). Le paquet Conda inclut un binaire libvips correspondant : conda install --channel conda-forge pyvips. Modes de compilation Si les en-têtes de développement de libvips sont installés et qu'un compilateur C fonctionnel est disponible, le module utilise le mode API de cffi pour compiler une extension binaire libvips pour votre Python. S'il ne peut pas compiler d'extension binaire, il revient au mode ABI de cffi, qui ne nécessite que la bibliothèque partagée libvips ; cela prend plus de temps au démarrage et est typiquement environ 20 % plus lent à l'exécution. L'utilisation du mode API peut être vérifiée avec pyvips.API_mode. Exemple Un programme d'exemple charge un JPG avec accès séquentiel, multiplie la valeur de chaque pixel vert par deux (image *= [1, 2, 1]), accentue la netteté avec un masque de convolution, et réécrit l'image sur le système de fichiers. Notes de développement Le README liste les commandes pour les installations locales en mode éditable, l'exécution de tous les tests avec tox, l'exécution de la suite de tests ou d'un test spécifique avec pytest, l'exécution de tests de performance, la vérification du style avec flake8, et la génération de la documentation HTML avec sphinx-build. Des annotations de type sont fournies via des fichiers stub PEP 561 (pyvips/__init__.pyi), utilisables avec mypy, bien que les méthodes acceptent des arguments nommés arbitraires pour les options libvips qui peuvent ne pas être entièrement couvertes par les annotations. Les tâches de maintenance incluent la régénération des énumérations à partir du GIR de libvips, la régénération des stubs de type, la régénération des autodocs, la mise à jour des numéros de version, et la compilation et le téléversement du paquet PyPI.