libvips هي مكتبة معالجة صور مترابطة أفقيًا تعتمد على الطلب. بالمقارنة مع المكتبات المماثلة، يعمل libvips بسرعة ويستخدم القليل من الذاكرة. تم ترخيص libvips بموجب LGPL-2.1 أو الأحدث.
يحتوي على حوالي 300 عملية تغطي العمليات الحسابية، والرسوم البيانية، والالتواء، والعمليات المورفولوجية، وتصفية التردد، واللون، وإعادة أخذ العينات، والإحصائيات وغيرها. وهو يدعم مجموعة كبيرة من الأنواع الرقمية، بدءًا من 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++ وسطر الأوامر. الارتباطات الكاملة متاحة لـ:
لغة | ملزم |
---|---|
روبي | روبي كبار الشخصيات |
بايثون | pyvips |
PHP | php-vips |
سي#/.نت | NetVips |
يذهب | govips |
لوا | لوا-vips |
كريستال | كبار الشخصيات الكريستال |
إكسير | فيكس |
JVM | vips-ffm |
يتم استخدام libvips كمحرك لمعالجة الصور من خلال:
حاد (على العقدة js) |
com.imgproxy |
com.bimg |
حاد للذهاب |
روبي أون ريلز |
com.carrierwave-vips |
ميدياويكي |
تدفق الصور |
JVips |
وغيرها. واجهة المستخدم الرسومية الرسمية لـ libvips هي nip2، وهي مزيج غريب من جدول البيانات ومحرر الصور.
توجد حزم لمعظم أنظمة التشغيل المشابهة لـ Unix، بما في ذلك macOS. تحقق من مدير الحزم الخاص بك.
هناك ثنائيات لنظام التشغيل Windows في الإصدارات.
يحتوي موقع libvips على ملاحظات تثبيت مفصلة.
يستخدم libvips نظام بناء Meson، الإصدار 0.56 أو الأحدث. يستطيع Meson استخدام ninja
أو Visual Studio أو XCode كواجهة خلفية، لذا ستحتاج أيضًا إلى واحد منهم.
يجب أن يكون لدى libvips build-essential
و pkg-config
و libglib2.0-dev
و libexpat1-dev
. راجع قسم التبعيات أدناه للحصول على قائمة كاملة بالتبعيات الاختيارية لـ libvips.
هناك عمليات إكمال باش أساسية في completions/
، راجع الملف التمهيدي الموجود هناك.
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
على دبيان إذا كنت لا تريد اسم القوس في مسار المكتبة.
أضف --default-library static
لإنشاء ثابت.
استخدم على سبيل المثال CC=clang CXX=clang++ meson setup ...
لتغيير المترجم.
يمكنك الحصول على دليل بناء بديل، واختيار أي أسماء تريدها، على سبيل المثال اسم للإصدار وآخر لتصحيح الأخطاء.
هناك مجموعة اختبار أكثر شمولاً يمكنك تشغيلها بمجرد تثبيت libvips. استخدم pytest
في الدليل الأساسي libvips.
إذا تم العثور على إصدارات مناسبة، ستضيف libvips دعمًا للمكتبات التالية تلقائيًا. عادةً ما يتم العثور على الحزم باستخدام pkg-config
، لذا تأكد من أن ذلك يعمل.
أي شيء متوافق مع مكتبة IJG JPEG. استخدم mozjpeg
إذا استطعت. خيار آخر هو libjpeg-turbo
.
إذا كان متاحًا، يضيف libvips دعمًا لبيانات تعريف EXIF في ملفات JPEG.
محمل SVG المعتاد. إذا لم يكن هذا موجودًا، فسيحاول الأشخاص المهمون تحميل ملفات SVG عبر imagemagick بدلاً من ذلك.
إذا كان موجودًا، فسيحاول libvips تحميل ملفات PDF باستخدام PDFium. قم بتنزيل ملف pdfium الثنائي المُعد مسبقًا من:
https://github.com/bblanchon/pdfium-binaries
Untar إلى بادئة تثبيت 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، مع واجهة برمجة تطبيقات سطحية. إذا لم يكن هذا موجودًا، فسيحاول الأشخاص المهمون تحميل ملفات PDF عبر imagemagick.
إذا كان ذلك متاحًا، فسيقوم libvips بحفظ ملفات GIF بتنسيق cgif. إذا لم يكن هذا موجودًا، فسيحاول الأشخاص المهمون حفظ صور GIF عبر imagemagick بدلاً من ذلك.
إذا كان متاحًا، يضيف libvips دعمًا لإنشاء أهرامات الصور باستخدام dzsave
.
مكتبة تيف. يجب أن يتم تصميمه مع دعم ضغط 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
. أعتقد أن معظم الرسائل الفورية المعبأة هي كذلك.
إذا كنت ستستخدم libvips مع صور غير موثوقة، ربما في خادم ويب، على سبيل المثال، فيجب عليك التفكير في الآثار الأمنية المترتبة على تمكين حزمة ذات سطح هجوم كبير كهذا.
إذا كان متاحًا، يضيف libvips دعمًا لعرض النص. أنت بحاجة إلى الحزمة pangocairo في pkg-config --list-all
.
إذا كان موجودًا، فسوف يقوم libvips بتسريع بعض العمليات باستخدام SIMD. إذا لم يكن الأمر كذلك، فسوف يبحث عن حزمة orc-0.4.
إذا كان ذلك متاحًا، يمكن لكبار الشخصيات تحميل الصور من ملفات حفظ Matlab.
إذا كان ذلك متاحًا، فيمكن للأشخاص المهمين تحميل صور FITS.
إذا كان ذلك متاحًا، فيمكن للأشخاص المهمين تحميل صور WebP وحفظها.
إذا كان ذلك متاحًا، فيمكن للأشخاص المهمين تحميل صور 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
هذا المشروع موجود بفضل جميع الأشخاص الذين ساهموا فيه.
لقد حصلنا على دعم مالي سخي من الرعاة. شكراً جزيلاً!