libvips เป็นไลบรารีการประมวลผลรูปภาพแบบเธรดแนวนอนที่ขับเคลื่อนด้วยความต้องการ เมื่อเปรียบเทียบกับไลบรารีที่คล้ายกัน libvips ทำงานเร็วและใช้หน่วยความจำน้อย libvips ได้รับอนุญาตภายใต้ LGPL-2.1 หรือใหม่กว่า
มีการดำเนินการประมาณ 300 รายการ ครอบคลุมถึงเลขคณิต ฮิสโตแกรม การบิดงอ การดำเนินการทางสัณฐานวิทยา การกรองความถี่ สี การสุ่มตัวอย่างใหม่ สถิติ และอื่นๆ รองรับประเภทตัวเลขที่หลากหลาย ตั้งแต่ int 8 บิตไปจนถึง 128 บิตที่ซับซ้อน รูปภาพสามารถมีแถบจำนวนเท่าใดก็ได้ รองรับรูปแบบภาพที่หลากหลาย รวมถึง JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF, วิเคราะห์ NIfTI, DeepZoom และ OpenSlide นอกจากนี้ยังสามารถโหลดรูปภาพผ่าน ImageMagick หรือ GraphicsMagick เพื่อให้ทำงานกับรูปแบบเช่น DICOM ได้
มันมาพร้อมกับการเชื่อมโยงสำหรับ C, C++ และบรรทัดคำสั่ง การผูกแบบเต็มมีให้สำหรับ:
ภาษา | ผูกพัน |
---|---|
ทับทิม | ทับทิม-วีไอพี |
หลาม | ไพวิปส์ |
PHP | php-vips.php |
ซี# / .NET | เน็ตวีไอพี |
ไป | โกวิป |
ลัวะ | lua-vips |
คริสตัล | คริสตัลวีไอพี |
น้ำอมฤต | วิกซ์ |
เจวีเอ็ม | vips-ffm |
libvips ถูกใช้เป็นเครื่องมือประมวลผลภาพโดย:
ชาร์ป (บน node.js) |
imgproxy |
บิมม์ |
คมชัดสำหรับไป |
รูบี้ออนเรลส์ |
ผู้ให้บริการเวฟวีไอพี |
มีวิกิ |
โฟโต้โฟลว์ |
เจวีไอพี |
และอื่น ๆ GUI libvips อย่างเป็นทางการคือ nip2 ซึ่งเป็นการผสมผสานที่แปลกระหว่างสเปรดชีตและโปรแกรมแก้ไขรูปภาพ
มีแพ็คเกจสำหรับระบบปฏิบัติการที่คล้าย Unix ส่วนใหญ่ รวมถึง macOS ตรวจสอบผู้จัดการแพ็คเกจของคุณ
มีไบนารีสำหรับ Windows ในการเผยแพร่
เว็บไซต์ libvips มีบันทึกการติดตั้งโดยละเอียด
libvips ใช้ระบบ Meson build เวอร์ชัน 0.56 หรือใหม่กว่า Meson สามารถใช้ ninja
, Visual Studio หรือ XCode เป็นแบ็กเอนด์ได้ ดังนั้นคุณจะต้องมีหนึ่งในนั้นด้วย
libvips ต้องมี build-essential
, pkg-config
, libglib2.0-dev
, libexpat1-dev
ดูส่วน การขึ้นต่อ กันด้านล่างเพื่อดูรายการการขึ้นต่อกันที่เป็นทางเลือกของ libvips ทั้งหมด
มีการเสร็จสิ้น bash พื้นฐานใน completions/
ดู README ในนั้น
cd libvips-x.y.x
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
ตรวจสอบผลลัพธ์ของ meson setup
อย่างระมัดระวัง และตรวจสอบให้แน่ใจว่าพบทุกสิ่งที่คุณต้องการให้ค้นหา เพิ่มอาร์กิวเมนต์ใน meson setup
เพื่อเปลี่ยนการกำหนดค่าบิลด์
เพิ่มแฟล็ก เช่น -Dnsgif=false
เพื่อเปิดและปิดตัวเลือก libvips โปรดดูที่ meson_options.txt
สำหรับรายการตัวเลือกบิวด์ทั้งหมดที่ libvips รองรับ
เพิ่มแฟล็ก เช่น -Dmagick=disabled
เพื่อเปิดและปิดการขึ้นต่อกันของ libvips โปรดดูที่ meson_options.txt
และรายการด้านล่างเพื่อดูข้อมูลสรุปของการขึ้นต่อกันของ libvips ทั้งหมด
คุณอาจต้องเพิ่ม --libdir lib
บน Debian หากคุณไม่ต้องการชื่อส่วนโค้งในเส้นทางไลบรารี
เพิ่ม --default-library static
สำหรับบิลด์แบบคงที่
ใช้เช่น CC=clang CXX=clang++ meson setup ...
เพื่อเปลี่ยนคอมไพเลอร์
คุณสามารถมีไดเร็กทอรีบิลด์สำรอง เลือกชื่อใดก็ได้ที่คุณต้องการ เช่น หนึ่งชื่อสำหรับรีลีส และอีกชื่อหนึ่งสำหรับดีบัก
มีชุดทดสอบที่ครอบคลุมมากขึ้นซึ่งคุณสามารถเรียกใช้ได้เมื่อติดตั้ง libvips แล้ว ใช้ pytest
ในไดเร็กทอรีฐาน libvips
หากพบเวอร์ชันที่เหมาะสม libvips จะเพิ่มการรองรับไลบรารีต่อไปนี้โดยอัตโนมัติ โดยทั่วไปจะพบแพ็คเกจด้วย pkg-config
ดังนั้นตรวจสอบให้แน่ใจว่าใช้งานได้
อะไรก็ตามที่เข้ากันได้กับไลบรารี IJG JPEG ใช้ mozjpeg
ถ้าทำได้ อีกทางเลือกหนึ่งคือ libjpeg-turbo
หากมี libvips จะเพิ่มการรองรับข้อมูลเมตา EXIF ในไฟล์ JPEG
ตัวโหลด SVG ตามปกติ หากไม่มีสิ่งนี้ vips จะพยายามโหลด SVG ผ่าน imagemagick แทน
หากมี libvips จะพยายามโหลด PDF ด้วย PDFium ดาวน์โหลดไบนารี pdfium ที่สร้างไว้ล่วงหน้าจาก:
https://github.com/bblanchon/pdfium-binaries
ยกเลิกคำนำหน้าการติดตั้ง libvips เช่น:
cd ~/vips
tar xf ~/pdfium-linux.tgz
สร้าง pdfium.pc
เช่นนี้ (อัปเดตหมายเลขเวอร์ชัน):
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
หากตรวจไม่พบ PDFium libvips จะค้นหา poppler-glib
แทน
ตัวเรนเดอร์ Poppler PDF พร้อม glib API หากไม่มีสิ่งนี้ vips จะพยายามโหลด PDF ผ่าน imagemagick
หากมี libvips จะบันทึก GIF ด้วย cgif หากไม่มีสิ่งนี้ vips จะพยายามบันทึก gif ผ่าน imagemagick แทน
หากมี libvips จะเพิ่มการรองรับสำหรับการสร้างภาพปิรามิดด้วย dzsave
ไลบรารี TIFF จำเป็นต้องสร้างโดยรองรับการบีบอัด JPEG และ ZIP 3.4b037 และใหม่กว่าเป็นที่ทราบกันว่าใช้ได้
หาก libvips พบไลบรารีนี้ ก็จะใช้สำหรับการแปลงฟูเรียร์
หากมี vips_icc_import()
, vips_icc_export()
และ vips_icc_transform()
สามารถใช้เพื่อจัดการรูปภาพด้วยโปรไฟล์ ICC
หากมี libvips จะโหลดและบันทึกไฟล์ PNG โดยใช้ libspng หากไม่เป็นเช่นนั้น ระบบจะมองหาแพ็คเกจ libpng มาตรฐาน
หากมีแพ็คเกจการวัดปริมาณอย่างใดอย่างหนึ่งเหล่านี้ libvips จะสามารถเขียน PNG และ GIF ที่ใช้จานสีขนาด 8 บิตได้
หากมี libvips จะเพิ่มการรองรับสำหรับการโหลดและบันทึกไฟล์รูปภาพทุกประเภทที่รองรับ libMagick คุณสามารถเปิดใช้งานและปิดใช้งานการโหลดและบันทึกแยกต่างหาก
Imagemagick 6.9+ จำเป็นต้องได้รับการสร้างด้วย --with-modules
ฉันคิดว่า IM แบบแพ็กเกจส่วนใหญ่เป็นเช่นนั้น
หากคุณกำลังจะใช้ libvips กับรูปภาพที่ไม่น่าเชื่อถือ เช่น ในเว็บเซิร์ฟเวอร์ คุณควรพิจารณาผลกระทบด้านความปลอดภัยของการเปิดใช้งานแพ็คเกจที่มีพื้นที่การโจมตีขนาดใหญ่เช่นนี้
หากมี libvips จะเพิ่มการรองรับสำหรับการแสดงข้อความ คุณต้องมีแพ็คเกจ pangocairo ใน pkg-config --list-all
หากมี libvips จะเร่งการดำเนินการบางอย่างด้วย SIMD ถ้าไม่เช่นนั้นก็จะมองหาแพ็คเกจ orc-0.4
หากมี vips สามารถโหลดรูปภาพจากไฟล์บันทึก Matlab ได้
หากมี vips สามารถโหลดอิมเมจ FITS ได้
หากมี vips สามารถโหลดและบันทึกอิมเมจ WebP ได้
หากมี vips สามารถโหลดและบันทึกอิมเมจ NIfTI ได้
หากมี libvips จะอ่านรูปภาพ OpenEXR โดยตรง (แต่ไม่ได้เขียน น่าเสียดาย)
หากมี libvips จะอ่านและเขียนภาพ JPEG2000
หากมี libvips จะอ่านและเขียนภาพ JPEG-XL
หากมี libvips สามารถโหลดไฟล์สไลด์เสมือนที่รองรับ OpenSlide ได้: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle และ Ventana
หากมี libvips สามารถโหลดและบันทึกรูปภาพ HEIC และ AVIF ได้ libheif ของคุณจะต้องสร้างด้วยตัวถอดรหัสและตัวเข้ารหัสที่ถูกต้อง คุณสามารถตรวจสอบด้วยเช่น:
$ 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
โครงการนี้เกิดขึ้นได้ต้องขอบคุณทุกคนที่มีส่วนร่วม
เราได้รับการสนับสนุนทางการเงินอย่างล้นหลามจากผู้สนับสนุนของเรา ขอบคุณมาก!