libvips adalah pustaka pemrosesan gambar yang digerakkan oleh permintaan dan dijalin secara horizontal. Dibandingkan dengan perpustakaan serupa, libvips berjalan cepat dan menggunakan sedikit memori. libvips dilisensikan di bawah LGPL-2.1-atau-yang lebih baru.
Ini memiliki sekitar 300 operasi yang meliputi aritmatika, histogram, konvolusi, operasi morfologi, penyaringan frekuensi, warna, pengambilan sampel ulang, statistik dan lain-lain. Ini mendukung berbagai macam tipe numerik, dari 8-bit int hingga 128-bit kompleks. Gambar dapat memiliki sejumlah band. Mendukung berbagai format gambar, termasuk JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF, Analisis, NIfTI, DeepZoom, dan OpenSlide. Itu juga dapat memuat gambar melalui ImageMagick atau GraphicsMagick, membiarkannya bekerja dengan format seperti DICOM.
Muncul dengan binding untuk C, C++, dan baris perintah. Binding lengkap tersedia untuk:
Bahasa | Mengikat |
---|---|
Rubi | ruby-vips |
ular piton | pyvips |
PHP | php-vips |
C# / .NET | NetVips |
Pergi | pemerintah |
Lua | lua-vips |
Kristal | kristal-vips |
Eliksir | vix |
JVM | vips-ffm |
libvips digunakan sebagai mesin pengolah gambar dengan:
tajam (di node.js) |
proksi img |
bim |
tajam untuk Go |
Ruby di Rel |
gelombang pembawa-vips |
mediawiki |
Aliran Foto |
JVip |
dan lainnya. GUI libvips resmi adalah nip2, kombinasi aneh antara spreadsheet dan editor foto.
Ada paket untuk sebagian besar sistem operasi mirip Unix, termasuk macOS. Periksa manajer paket Anda.
Ada binari untuk Windows dalam rilis.
Situs web libvips memiliki catatan pemasangan yang terperinci.
libvips menggunakan sistem build Meson, versi 0.56 atau lebih baru. Meson dapat menggunakan ninja
, Visual Studio atau XCode sebagai backend, jadi Anda juga memerlukan salah satunya.
libvips harus memiliki build-essential
, pkg-config
, libglib2.0-dev
, libexpat1-dev
. Lihat bagian Dependensi di bawah untuk daftar lengkap dependensi opsional libvips.
Ada penyelesaian bash dasar completions/
, lihat README di sana.
cd libvips-x.y.x
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
Periksa keluaran meson setup
dengan hati-hati dan pastikan ia menemukan semua yang Anda inginkan. Tambahkan argumen ke meson setup
untuk mengubah konfigurasi build.
Tambahkan tanda seperti -Dnsgif=false
untuk mengaktifkan dan menonaktifkan opsi libvips, lihat meson_options.txt
untuk daftar semua opsi build yang didukung libvips.
Tambahkan tanda seperti -Dmagick=disabled
untuk menghidupkan dan mematikan dependensi libvips, lihat meson_options.txt
dan daftar di bawah untuk ringkasan semua dependensi libvips.
Anda mungkin perlu menambahkan --libdir lib
di Debian jika Anda tidak ingin nama arch di jalur perpustakaan.
Tambahkan --default-library static
untuk build statis.
Gunakan misalnya CC=clang CXX=clang++ meson setup ...
untuk mengubah kompiler.
Anda dapat memiliki direktori build alternatif, pilih nama apa pun yang Anda suka, misalnya satu untuk rilis dan satu lagi untuk debug.
Ada rangkaian pengujian yang lebih komprehensif yang dapat Anda jalankan setelah libvips diinstal. Gunakan pytest
di direktori dasar libvips.
Jika ditemukan versi yang sesuai, libvips akan menambahkan dukungan untuk perpustakaan berikut secara otomatis. Paket umumnya ditemukan dengan pkg-config
, jadi pastikan itu berfungsi.
Apa pun yang kompatibel dengan perpustakaan IJG JPEG. Gunakan mozjpeg
jika Anda bisa. Pilihan lainnya adalah libjpeg-turbo
.
Jika tersedia, libvips menambahkan dukungan untuk metadata EXIF dalam file JPEG.
Pemuat SVG biasa. Jika ini tidak ada, vips akan mencoba memuat SVG melalui imagemagick.
Jika ada, libvips akan mencoba memuat PDF dengan PDFium. Unduh biner pdfium bawaan dari:
https://github.com/bblanchon/pdfium-binaries
Untar ke awalan instalasi libvips, misalnya:
cd ~/vips
tar xf ~/pdfium-linux.tgz
Buat pdfium.pc
seperti ini (perbarui nomor versi):
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
Jika PDFium tidak terdeteksi, libvips akan mencari poppler-glib
sebagai gantinya.
Penyaji PDF Poppler, dengan API fasih. Jika ini tidak ada, vips akan mencoba memuat PDF melalui imagemagick.
Jika tersedia, libvips akan menyimpan GIF dengan cgif. Jika ini tidak ada, vips akan mencoba menyimpan gif melalui imagemagick.
Jika tersedia, libvips menambahkan dukungan untuk membuat piramida gambar dengan dzsave
.
Perpustakaan TIFF. Itu perlu dibangun dengan dukungan untuk kompresi JPEG dan ZIP. 3.4b037 dan yang lebih baru diketahui baik-baik saja.
Jika libvips menemukan perpustakaan ini, ia akan menggunakannya untuk transformasi fourier.
Jika ada, vips_icc_import()
, vips_icc_export()
dan vips_icc_transform()
dapat digunakan untuk memanipulasi gambar dengan profil ICC.
Jika ada, libvips akan memuat dan menyimpan file PNG menggunakan libspng. Jika tidak, ia akan mencari paket libpng standar.
Jika salah satu dari paket kuantisasi ini ada, libvips dapat menulis PNG dan GIF dengan palet 8-bit.
Jika tersedia, libvips menambahkan dukungan untuk memuat dan menyimpan semua jenis file gambar yang didukung libMagick. Anda dapat mengaktifkan dan menonaktifkan memuat dan menyimpan secara terpisah.
Imagemagick 6.9+ harus dibuat dengan --with-modules
. Menurut saya, sebagian besar IM yang dikemas demikian.
Jika Anda akan menggunakan libvips dengan gambar yang tidak tepercaya, mungkin di server web, misalnya, Anda harus mempertimbangkan implikasi keamanan dari mengaktifkan paket dengan permukaan serangan yang begitu besar.
Jika tersedia, libvips menambahkan dukungan untuk rendering teks. Anda memerlukan paket pangocairo di pkg-config --list-all
.
Jika ada, libvips akan mempercepat beberapa operasi dengan SIMD. Jika tidak, ia akan mencari paket orc-0.4.
Jika tersedia, vips dapat memuat gambar dari file penyimpanan Matlab.
Jika tersedia, vips dapat memuat gambar FITS.
Jika tersedia, vips dapat memuat dan menyimpan gambar WebP.
Jika tersedia, vips dapat memuat dan menyimpan gambar NIfTI.
Jika tersedia, libvips akan langsung membaca (tapi sayangnya tidak menulis) gambar OpenEXR.
Jika tersedia, libvips akan membaca dan menulis gambar JPEG2000.
Jika tersedia, libvips akan membaca dan menulis gambar JPEG-XL.
Jika tersedia, libvips dapat memuat file slide virtual yang didukung OpenSlide: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle, dan Ventana.
Jika tersedia, libvips dapat memuat dan menyimpan gambar HEIC dan AVIF. Libheif Anda (pada gilirannya) perlu dibuat dengan decoder dan encoder yang benar. Anda dapat memeriksanya dengan misalnya:
$ 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
Proyek ini ada berkat semua orang yang berkontribusi.
Kami mendapat dukungan finansial yang besar dari sponsor kami. Terima kasih banyak!