libvips es una biblioteca de procesamiento de imágenes con subprocesos horizontales y basada en la demanda. En comparación con bibliotecas similares, libvips se ejecuta rápidamente y utiliza poca memoria. libvips tiene licencia LGPL-2.1 o posterior.
Tiene alrededor de 300 operaciones que cubren aritmética, histogramas, convolución, operaciones morfológicas, filtrado de frecuencia, color, remuestreo, estadísticas y otras. Admite una amplia gama de tipos numéricos, desde int de 8 bits hasta complejos de 128 bits. Las imágenes pueden tener cualquier número de bandas. Admite una buena variedad de formatos de imagen, incluidos JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM/PGM/PFM, CSV, GIF, Analizar, NIfTI, DeepZoom y OpenSlide. También puede cargar imágenes a través de ImageMagick o GraphicsMagick, lo que le permite funcionar con formatos como DICOM.
Viene con enlaces para C, C++ y la línea de comandos. Encuadernaciones completas están disponibles para:
Idioma | Vinculante |
---|---|
Rubí | rubí-vips |
Pitón | pivips |
PHP | php-vips |
C#/.NET | NetVips |
Ir | govips |
lua | lua-vips |
Cristal | cristal-vips |
Elixir | vix |
JVM | vips-ffm |
libvips se utiliza como motor de procesamiento de imágenes por:
agudo (en node.js) |
imgproxy |
bimg |
agudo para ir |
Rubí sobre rieles |
portadora-vips |
medioswiki |
flujo de fotos |
JVips |
y otros. La GUI oficial de libvips es nip2, una extraña combinación de hoja de cálculo y editor de fotografías.
Existen paquetes para la mayoría de los sistemas operativos tipo Unix, incluido macOS. Consulte su administrador de paquetes.
Hay binarios para Windows en las versiones.
El sitio web libvips tiene notas de instalación detalladas.
libvips utiliza el sistema de compilación Meson, versión 0.56 o posterior. Meson puede usar ninja
, Visual Studio o XCode como backend, por lo que también necesitarás uno de ellos.
libvips debe tener build-essential
, pkg-config
, libglib2.0-dev
, libexpat1-dev
. Consulte la sección Dependencias a continuación para obtener una lista completa de las dependencias opcionales de libvips.
Hay completaciones de bash básicas en completions/
, consulte el archivo README allí.
cd libvips-x.y.x
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
Verifique cuidadosamente el resultado de meson setup
y asegúrese de que haya encontrado todo lo que deseaba encontrar. Agregue argumentos a meson setup
para cambiar la configuración de compilación.
Agregue indicadores como -Dnsgif=false
para activar y desactivar las opciones de libvips; consulte meson_options.txt
para obtener una lista de todas las opciones de compilación que admite libvips.
Agregue indicadores como -Dmagick=disabled
para activar y desactivar las dependencias de libvips; consulte meson_options.txt
y la lista a continuación para obtener un resumen de todas las dependencias de libvips.
Es posible que deba agregar --libdir lib
en Debian si no desea que el nombre del archivo aparezca en la ruta de la biblioteca.
Agregue --default-library static
para una compilación estática.
Utilice, por ejemplo, CC=clang CXX=clang++ meson setup ...
para cambiar el compilador.
Puede tener un directorio de compilación alternativo, elija los nombres que desee, por ejemplo, uno para lanzamiento y otro para depuración.
Hay un conjunto de pruebas más completo que puede ejecutar una vez que se haya instalado libvips. Utilice pytest
en el directorio base de libvips.
Si se encuentran versiones adecuadas, libvips agregará soporte para las siguientes bibliotecas automáticamente. Los paquetes generalmente se encuentran con pkg-config
, así que asegúrese de que esté funcionando.
Todo lo que sea compatible con la biblioteca IJG JPEG. Utilice mozjpeg
si puede. Otra opción es libjpeg-turbo
.
Si está disponible, libvips agrega soporte para metadatos EXIF en archivos JPEG.
El cargador SVG habitual. Si esto no está presente, vips intentará cargar SVG a través de imagemagick.
Si está presente, libvips intentará cargar archivos PDF con PDFium. Descargue el binario pdfium prediseñado desde:
https://github.com/bblanchon/pdfium-binaries
Descomprima el prefijo de instalación de libvips, por ejemplo:
cd ~/vips
tar xf ~/pdfium-linux.tgz
Cree un pdfium.pc
como este (actualice el número de versión):
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 no se detecta PDFium, libvips buscará poppler-glib
en su lugar.
El renderizador de PDF de Poppler, con una API simplista. Si esto no está presente, vips intentará cargar archivos PDF a través de imagemagick.
Si está disponible, libvips guardará los GIF con cgif. Si esto no está presente, vips intentará guardar gifs a través de imagemagick.
Si está disponible, libvips agrega soporte para crear pirámides de imágenes con dzsave
.
La biblioteca TIFF. Debe construirse con soporte para compresión JPEG y ZIP. Se sabe que 3.4b037 y posteriores están bien.
Si libvips encuentra esta biblioteca, la usa para transformaciones de Fourier.
Si están presentes, vips_icc_import()
, vips_icc_export()
y vips_icc_transform()
se pueden utilizar para manipular imágenes con perfiles ICC.
Si está presente, libvips cargará y guardará archivos PNG usando libspng. De lo contrario, buscará el paquete libpng estándar.
Si uno de estos paquetes de cuantificación está presente, libvips puede escribir PNG y GIF con paleta de 8 bits.
Si está disponible, libvips agrega soporte para cargar y guardar todos los tipos de archivos de imagen compatibles con libMagick. Puede habilitar y deshabilitar la carga y guardar por separado.
Imagemagick 6.9+ debe haberse creado con --with-modules
. Creo que la mayoría de los mensajes instantáneos empaquetados lo son.
Si va a utilizar libvips con imágenes que no son de confianza, tal vez en un servidor web, por ejemplo, debería considerar las implicaciones de seguridad de habilitar un paquete con una superficie de ataque tan grande.
Si está disponible, libvips agrega soporte para representación de texto. Necesita el paquete pangocairo en pkg-config --list-all
.
Si está presente, libvips acelerará algunas operaciones con SIMD. De lo contrario, buscará el paquete orc-0.4.
Si están disponibles, los vips pueden cargar imágenes desde archivos guardados de Matlab.
Si están disponibles, los vips pueden cargar imágenes FITS.
Si está disponible, los vips pueden cargar y guardar imágenes WebP.
Si está disponible, los vips pueden cargar y guardar imágenes NIfTI.
Si está disponible, libvips leerá directamente (pero lamentablemente no escribirá) imágenes OpenEXR.
Si está disponible, libvips leerá y escribirá imágenes JPEG2000.
Si está disponible, libvips leerá y escribirá imágenes JPEG-XL.
Si está disponible, libvips puede cargar archivos de diapositivas virtuales compatibles con OpenSlide: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle y Ventana.
Si está disponible, libvips puede cargar y guardar imágenes HEIC y AVIF. Su libheif (a su vez) debe construirse con los decodificadores y codificadores correctos. Puedes consultar con, por ejemplo:
$ 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
Este proyecto existe gracias a todas las personas que contribuyen.
Hemos contado con un generoso apoyo financiero de nuestros patrocinadores. ¡Muchas gracias!