libvips é uma biblioteca de processamento de imagens com thread horizontalmente orientada por demanda. Comparado a bibliotecas semelhantes, o libvips é executado rapidamente e usa pouca memória. libvips é licenciado sob LGPL-2.1 ou posterior.
Possui cerca de 300 operações abrangendo aritmética, histogramas, convolução, operações morfológicas, filtragem de frequência, cor, reamostragem, estatística e outras. Ele suporta uma grande variedade de tipos numéricos, desde int de 8 bits até complexo de 128 bits. As imagens podem ter qualquer número de bandas. Suporta uma boa variedade de formatos de imagem, incluindo JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM/PGM/PFM, CSV, GIF, Analisar, NIfTI, DeepZoom e OpenSlide. Também pode carregar imagens via ImageMagick ou GraphicsMagick, permitindo trabalhar com formatos como DICOM.
Ele vem com ligações para C, C++ e linha de comando. Vinculações completas estão disponíveis para:
Linguagem | Vinculativo |
---|---|
Rubi | rubi-vips |
Pitão | pyvips |
PHP | php-vips |
C#/.NET | NetVips |
Ir | governadores |
Lua | lua-vips |
Cristal | cristal-vips |
Elixir | vix |
JVM | vips-ffm |
libvips é usado como mecanismo de processamento de imagem por:
afiado (em node.js) |
proxyimg |
bimg |
afiado para Go |
Ruby nos trilhos |
operadorawave-vips |
mídiawiki |
FotoFlow |
JVips |
e outros. A GUI oficial do libvips é o nip2, uma estranha combinação de planilha e editor de fotos.
Existem pacotes para a maioria dos sistemas operacionais do tipo Unix, incluindo macOS. Verifique seu gerenciador de pacotes.
Existem binários para Windows nas versões.
O site libvips possui notas de instalação detalhadas.
libvips usa o sistema de compilação Meson, versão 0.56 ou posterior. Meson pode usar ninja
, Visual Studio ou XCode como backend, então você também precisará de um deles.
libvips deve ter build-essential
, pkg-config
, libglib2.0-dev
, libexpat1-dev
. Consulte a seção Dependências abaixo para obter uma lista completa das dependências opcionais do libvips.
Existem conclusões básicas do bash completions/
, veja o README lá.
cd libvips-x.y.x
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
Verifique a saída do meson setup
com cuidado e certifique-se de que ele encontrou tudo o que você queria. Adicione argumentos à meson setup
para alterar a configuração do build.
Adicione sinalizadores como -Dnsgif=false
para ativar e desativar as opções do libvips, consulte meson_options.txt
para obter uma lista de todas as opções de construção suportadas pelo libvips.
Adicione sinalizadores como -Dmagick=disabled
para ativar e desativar dependências de libvips, consulte meson_options.txt
e a lista abaixo para um resumo de todas as dependências de libvips.
Pode ser necessário adicionar --libdir lib
no Debian se não quiser o nome do arco no caminho da biblioteca.
Adicione --default-library static
para uma construção estática.
Use, por exemplo CC=clang CXX=clang++ meson setup ...
para alterar o compilador.
Você pode ter um diretório de construção alternativo, escolher os nomes que desejar, por exemplo, um para lançamento e outro para depuração.
Há um conjunto de testes mais abrangente que você pode executar depois que o libvips for instalado. Use pytest
no diretório base libvips.
Se versões adequadas forem encontradas, o libvips adicionará suporte para as seguintes bibliotecas automaticamente. Os pacotes geralmente são encontrados com pkg-config
, portanto, certifique-se de que esteja funcionando.
Qualquer coisa que seja compatível com a biblioteca IJG JPEG. Use mozjpeg
se puder. Outra opção é libjpeg-turbo
.
Se disponível, libvips adiciona suporte para metadados EXIF em arquivos JPEG.
O carregador SVG usual. Se não estiver presente, o vips tentará carregar SVGs via imagemagick.
Se presente, o libvips tentará carregar PDFs com PDFium. Baixe o binário pdfium pré-construído em:
https://github.com/bblanchon/pdfium-binaries
Untar para o prefixo de instalação libvips, por exemplo:
cd ~/vips
tar xf ~/pdfium-linux.tgz
Crie um pdfium.pc
como este (atualize o número da versão):
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
Se o PDFium não for detectado, o libvips irá procurar pelo poppler-glib
.
O renderizador Poppler PDF, com uma API simplista. Se não estiver presente, o vips tentará carregar PDFs via imagemagick.
Se disponível, o libvips salvará GIFs com cgif. Se não estiver presente, os vips tentarão salvar os gifs via imagemagick.
Se disponível, libvips adiciona suporte para criação de pirâmides de imagens com dzsave
.
A biblioteca TIFF. Ele precisa ser construído com suporte para compactação JPEG e ZIP. 3.4b037 e posteriores são considerados OK.
Se o libvips encontrar esta biblioteca, ele a utilizará para transformações de Fourier.
Se presente, vips_icc_import()
, vips_icc_export()
e vips_icc_transform()
podem ser usados para manipular imagens com perfis ICC.
Se presente, o libvips irá carregar e salvar arquivos PNG usando libspng. Caso contrário, ele procurará o pacote libpng padrão.
Se um desses pacotes de quantização estiver presente, o libvips pode escrever PNGs e GIFs com paleta de 8 bits.
Se disponível, o libvips adiciona suporte para carregar e salvar todos os tipos de arquivos de imagem suportados pelo libMagick. Você pode ativar e desativar carregar e salvar separadamente.
O Imagemagick 6.9+ precisa ter sido construído com --with-modules
. A maioria das mensagens instantâneas empacotadas são, eu acho.
Se você for usar libvips com imagens não confiáveis, talvez em um servidor web, por exemplo, você deve considerar as implicações de segurança de habilitar um pacote com uma superfície de ataque tão grande.
Se disponível, libvips adiciona suporte para renderização de texto. Você precisa do pacote pangocairo em pkg-config --list-all
.
Se presente, o libvips irá acelerar algumas operações com SIMD. Caso contrário, ele procurará o pacote orc-0.4.
Se disponível, vips pode carregar imagens de arquivos salvos do Matlab.
Se disponível, os vips podem carregar imagens FITS.
Se disponível, os vips podem carregar e salvar imagens WebP.
Se disponível, os vips podem carregar e salvar imagens NIfTI.
Se disponível, o libvips irá ler diretamente (mas não escrever, infelizmente) imagens OpenEXR.
Se disponível, o libvips irá ler e gravar imagens JPEG2000.
Se disponível, o libvips irá ler e gravar imagens JPEG-XL.
Se disponível, o libvips pode carregar arquivos de slides virtuais suportados pelo OpenSlide: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle e Ventana.
Se disponível, o libvips pode carregar e salvar imagens HEIC e AVIF. Seu libheif (por sua vez) precisa ser construído com os decodificadores e codificadores corretos. Você pode verificar com, por exemplo:
$ 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 projeto existe graças a todas as pessoas que contribuem.
Tivemos apoio financeiro generoso de nossos patrocinadores. Muito obrigado!