libvips est une bibliothèque de traitement d'images axée sur la demande et à thread horizontal. Par rapport aux bibliothèques similaires, libvips s'exécute rapidement et utilise peu de mémoire. libvips est sous licence LGPL-2.1 ou version ultérieure.
Il compte environ 300 opérations couvrant l'arithmétique, les histogrammes, la convolution, les opérations morphologiques, le filtrage de fréquence, la couleur, le rééchantillonnage, les statistiques et autres. Il prend en charge une large gamme de types numériques, de l'entier 8 bits au complexe 128 bits. Les images peuvent avoir n'importe quel nombre de bandes. Il prend en charge une large gamme de formats d'image, notamment JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM/PGM/PFM, CSV, GIF, Analyser, NIfTI, DeepZoom et OpenSlide. Il peut également charger des images via ImageMagick ou GraphicsMagick, lui permettant de fonctionner avec des formats comme DICOM.
Il est livré avec des liaisons pour C, C++ et la ligne de commande. Des fixations complètes sont disponibles pour :
Langue | Obligatoire |
---|---|
Rubis | rubis-vips |
Python | pyvips |
PHP | php-vips |
C#/.NET | NetVips |
Aller | govips |
Lua | lua-vips |
Cristal | cristal-vips |
Élixir | vix |
JVM | vips-ffm |
libvips est utilisé comme moteur de traitement d'image par :
pointu (sur node.js) |
imgproxy |
bimg |
pointu pour Go |
Rubis sur Rails |
transporteurwave-vips |
wikimédia |
Flux de photos |
JVips |
et d'autres. L'interface graphique officielle de libvips est nip2, une étrange combinaison d'une feuille de calcul et d'un éditeur de photos.
Il existe des packages pour la plupart des systèmes d'exploitation de type Unix, y compris macOS. Vérifiez votre gestionnaire de paquets.
Il existe des binaires pour Windows dans les versions.
Le site Web libvips contient des notes d'installation détaillées.
libvips utilise le système de build Meson, version 0.56 ou ultérieure. Meson peut utiliser ninja
, Visual Studio ou XCode comme backend, vous en aurez donc également besoin.
libvips doit avoir build-essential
, pkg-config
, libglib2.0-dev
, libexpat1-dev
. Voir la section Dépendances ci-dessous pour une liste complète des dépendances facultatives de libvips.
Il y a des complétions bash de base dans completions/
, voir le README là-dedans.
cd libvips-x.y.x
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
Vérifiez attentivement le résultat de meson setup
et assurez-vous qu'il a trouvé tout ce que vous vouliez trouver. Ajoutez des arguments à meson setup
pour modifier la configuration de construction.
Ajoutez des indicateurs comme -Dnsgif=false
pour activer et désactiver les options de libvips, voir meson_options.txt
pour une liste de toutes les options de construction prises en charge par libvips.
Ajoutez des indicateurs comme -Dmagick=disabled
pour activer et désactiver les dépendances libvips, voir meson_options.txt
et la liste ci-dessous pour un résumé de toutes les dépendances libvips.
Vous devrez peut-être ajouter --libdir lib
sur Debian si vous ne voulez pas que le nom de l'arche soit dans le chemin de la bibliothèque.
Ajoutez --default-library static
pour une version statique.
Utilisez par exemple CC=clang CXX=clang++ meson setup ...
pour changer de compilateur.
Vous pouvez avoir un répertoire de construction alternatif, choisir les noms de votre choix, par exemple un pour la version et un pour le débogage.
Il existe une suite de tests plus complète que vous pouvez exécuter une fois libvips installé. Utilisez pytest
dans le répertoire de base libvips.
Si des versions appropriées sont trouvées, libvips ajoutera automatiquement la prise en charge des bibliothèques suivantes. Les packages se trouvent généralement avec pkg-config
, alors assurez-vous que cela fonctionne.
Tout ce qui est compatible avec la bibliothèque IJG JPEG. Utilisez mozjpeg
si vous le pouvez. Une autre option est libjpeg-turbo
.
Si disponible, libvips ajoute la prise en charge des métadonnées EXIF dans les fichiers JPEG.
Le chargeur SVG habituel. Si ce n'est pas le cas, les vips essaieront plutôt de charger les SVG via imagemagick.
S'il est présent, libvips tentera de charger des PDF avec PDFium. Téléchargez le binaire pdfium prédéfini à partir de :
https://github.com/bblanchon/pdfium-binaries
Décompressez le préfixe d'installation de libvips, par exemple :
cd ~/vips
tar xf ~/pdfium-linux.tgz
Créez un pdfium.pc
comme ceci (mettez à jour le numéro de version) :
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
Si PDFium n'est pas détecté, libvips recherchera plutôt poppler-glib
.
Le moteur de rendu PDF Poppler, avec une API simple. Si ce n'est pas le cas, les vips essaieront de charger des PDF via imagemagick.
Si disponible, libvips enregistrera les GIF avec cgif. Si ce n'est pas le cas, les vips essaieront plutôt de sauvegarder les gifs via imagemagick.
Si disponible, libvips ajoute la prise en charge de la création de pyramides d'images avec dzsave
.
La bibliothèque TIFF. Il doit être construit avec la prise en charge de la compression JPEG et ZIP. 3.4b037 et versions ultérieures sont connues pour être OK.
Si libvips trouve cette bibliothèque, il l'utilise pour les transformations de Fourier.
Si présents, vips_icc_import()
, vips_icc_export()
et vips_icc_transform()
peuvent être utilisés pour manipuler des images avec des profils ICC.
S'il est présent, libvips chargera et enregistrera les fichiers PNG en utilisant libspng. Sinon, il recherchera le package libpng standard.
Si l'un de ces packages de quantification est présent, libvips peut écrire des PNG et GIF en palette de 8 bits.
S'il est disponible, libvips ajoute la prise en charge du chargement et de l'enregistrement de tous les types de fichiers image pris en charge par libMagick. Vous pouvez activer et désactiver le chargement et l'enregistrement séparément.
Imagemagick 6.9+ doit avoir été construit avec --with-modules
. La plupart des messageries instantanées packagées le sont, je pense.
Si vous envisagez d'utiliser libvips avec des images non fiables, peut-être sur un serveur Web, par exemple, vous devez considérer les implications en matière de sécurité de l'activation d'un package avec une surface d'attaque aussi importante.
Si disponible, libvips ajoute la prise en charge du rendu de texte. Vous avez besoin du package pangocairo dans pkg-config --list-all
.
S'ils sont présents, libvips accélérera certaines opérations avec SIMD. Sinon, il recherchera le package orc-0.4.
Si disponible, les vips peuvent charger des images à partir de fichiers de sauvegarde Matlab.
Si disponible, les VIP peuvent charger des images FITS.
Si disponible, les vips peuvent charger et enregistrer des images WebP.
Si disponible, les vips peuvent charger et enregistrer des images NIfTI.
S'ils sont disponibles, libvips lira directement (mais n'écrira malheureusement pas) les images OpenEXR.
Si disponible, libvips lira et écrira les images JPEG2000.
Si disponible, libvips lira et écrira les images JPEG-XL.
S'ils sont disponibles, libvips peuvent charger des fichiers de diapositives virtuelles pris en charge par OpenSlide : Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle et Ventana.
Si disponible, libvips peut charger et enregistrer des images HEIC et AVIF. Votre libheif (à son tour) doit être construite avec les décodeurs et encodeurs appropriés. Vous pouvez vérifier avec par exemple :
$ 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
Ce projet existe grâce à toutes les personnes qui y contribuent.
Nous avons reçu un généreux soutien financier de la part de nos sponsors. Merci beaucoup!