عن المشروع

pyvips هي ربط Python لمكتبة معالجة الصور libvips، مُنفَّذة باستخدام cffi. تغلف libvips بحيث يمكن لبرامج Python استخدام عملياتها، وتجتاز اختبارات vips دون تسرب للذاكرة تحت python3 وpypy3 على ويندوز وmacOS ولينكس. كيف تعمل البرامج التي تستخدم pyvips لا تتعامل مع الصور مباشرة. بدلاً من ذلك، تنشئ خطوط أنابيب من عمليات معالجة الصور مبنية على صورة مصدر. عندما يُوصَل طرف الخط بمصدر، يُنفَّذ الخط بأكمله دفعة واحدة، مما يدفق الصورة بالتوازي من المصدر إلى الوجهة قسمًا قسمًا. ولأنه متوازٍ فهو سريع، ولأنه لا يحتاج للاحتفاظ بصور كاملة في الذاكرة فهو خفيف. يستشهد README بمعيار سرعة وذاكرة libvips، حيث يكون اختبار تحميل صورة TIFF كبيرة وتصغيرها بنسبة 10% وتوضيحها وحفظها أسرع بحوالي 3 مرات من ImageMagick ويحتاج ذاكرة أقل بحوالي 5 مرات. التثبيت أسرع طريقة هي الحزمة الثنائية: pip install "pyvips[binary]". تثبّت هذه حزمة مكتفية ذاتيًا مع المكتبات الأكثر شيوعًا وتعمل على معظم المنصات، بما فيها لينكس وويندوز وmacOS، مع معالجات x64 وARM 64 و32 بت. تفتقر libvips المرفقة إلى ميزات مثل تحميل PDF ودعم OpenSlide. بدلاً من ذلك، ثبّت libvips بشكل منفصل. تحتاج إلى مكتبة libvips المشتركة في مسار بحث المكتبات، الإصدار 8.2 أو أحدث، على الرغم من أن 8.9 على الأقل مطلوب لجميع الميزات. على لينكس، على سبيل المثال، apt install libvips-dev ثم pip install pyvips؛ مع Python 3.11 وما بعده يلزم بيئة افتراضية أولاً. على macOS مع Homebrew: brew install vips python pkg-config، ثم pip install pyvips. على ويندوز، نزّل ثنائيًا مُجمَّعًا مسبقًا من موقع libvips، واستخدم Python 64 بت، وأضف vips-dev-x.y\bin إلى PATH أو عيّن PATH من داخل البرنامج (باستخدام os.add_dll_directory على Python 3.8+). حزمة Conda تتضمن ثنائي libvips مطابقًا: conda install --channel conda-forge pyvips. أوضاع البناء إذا كانت رؤوس تطوير libvips مثبتة ومترجم C متاح، يستخدم الوحدة وضع cffi API لبناء امتداد libvips ثنائي لـ Python الخاص بك. إذا لم يتمكن من بناء امتداد ثنائي، يتراجع إلى وضع cffi ABI، الذي يحتاج فقط مكتبة libvips المشتركة؛ يستغرق هذا وقتًا أطول للبدء وأبطأ بنحو 20% في التنفيذ. يمكن التحقق من استخدام وضع API عبر pyvips.API_mode. مثال برنامج نموذجي يحمّل صورة JPG بوصول تسلسلي، يضرب قيمة كل بكسل أخضر في اثنين (image *= [1, 2, 1])، يوضّح الصورة بقناع التفاف، ويكتب الصورة مرة أخرى إلى نظام الملفات. ملاحظات التطوير يسرد README أوامر للتثبيت المحلي القابل للتحرير، وتشغيل جميع الاختبارات مع tox، وتشغيل مجموعة الاختبارات أو اختبار محدد مع pytest، وتشغيل اختبارات الأداء، والتحقق من الأسلوب مع flake8، وتوليد وثائق HTML مع sphinx-build. تُوفَّر تلميحات الأنواع عبر ملفات كعب PEP 561 (pyvips/__init__.pyi)، قابلة للاستخدام مع mypy، على الرغم من أن الطرق تقبل وسائط كلمات مفتاحية عشوائية لخيارات libvips التي قد لا تغطيها التلميحات بالكامل. تشمل مهام الصيانة إعادة توليد التعدادات من GIR libvips، وإعادة توليد كعوب الأنواع، وإعادة توليد التوثيق التلقائي، وتحديث أرقام الإصدارات، وبناء وتحميل حزمة PyPI.