zlib --- ضغط وفك ضغط zlib

تتيح هذه الوحدة ضغط وفك ضغط البيانات الثنائية باستخدام خوارزمية DEFLATE (المستخدمة عادةً في مكتبة zlib وأداة أرشفة gzip).

ملاحظة

يُفضّل استخدام deflate.DeflateIO بدلًا من الدوال في هذه الوحدة لأنها توفر واجهة تدفقية للضغط وفك الضغط تكون ملائمة وأكثر كفاءة في استخدام الذاكرة عند العمل مع قراءة أو كتابة بيانات مضغوطة إلى ملف أو مقبس أو دفق.

التوفر:

  • هذه الوحدة غير مضمّنة في OpenMV Cam افتراضيًا، لأنها تكرر وظيفة توفرها بالفعل الوحدة deflate.

  • يمكن تثبيت نسخة (أو تجميدها داخل برنامج ثابت مخصص) من micropython-lib (المصدر). راجع إدارة الحزم لمزيد من المعلومات. يصف هذا التوثيق تلك الوحدة.

  • تعتمد على الوحدة المدمجة deflate، وهي موجودة على جميع كاميرات OpenMV Cam.

  • يتوفر الضغط فقط إذا كان الضغط متاحًا في الوحدة المدمجة deflate -- أي ليس على كاميرات OpenMV Cam القائمة على STM32 (انظر ملاحظة التوفر الخاصة بها أعلاه).

الدوال

zlib.decompress(data: bytes, wbits: int = 15, /) bytes

فك ضغط data إلى كائن bytes.

يعمل الوسيط wbits بالطريقة نفسها كما في zlib.compress() مع القيم الصالحة الإضافية التالية:

  • 0: تحديد حجم النافذة تلقائيًا من ترويسة zlib (يجب أن يكون data بتنسيق zlib).

  • 35 إلى 47: الكشف التلقائي عن تنسيق zlib أو gzip.

كما في zlib.compress()، راجع توثيق CPython الخاص بـ zlib لمزيد من المعلومات حول الوسيط wbits. وكما في zlib.compress()، يدعم MicroPython أيضًا أحجام نوافذ أصغر من CPython. راجع المزيد من التفاصيل الخاصة بـ MicroPython في توثيق الوحدة deflate.

إذا كانت البيانات المراد فك ضغطها تتطلب حجم نافذة أكبر، فستفشل أثناء فك الضغط.

zlib.compress(data: bytes, wbits: int = 15, /) bytes

ضغط data إلى كائن bytes.

يتيح لك wbits تهيئة حجم نافذة قاموس DEFLATE وتنسيق الإخراج. ويتيح لك حجم النافذة المفاضلة بين استخدام الذاكرة ومستوى الضغط. فحجم النافذة الأكبر يتيح للضاغط الإشارة إلى أجزاء أبعد في الإدخال. أما تنسيقات الإخراج فهي DEFLATE "الخام" (بدون ترويسة/تذييل)، وzlib، وgzip، حيث يتضمن الأخيران ترويسة ومجموع تحقق.

تضبط البتات الأربع المنخفضة من القيمة المطلقة لـ wbits اللوغاريتم بالأساس 2 لحجم نافذة قاموس DEFLATE. فمثلًا، wbits=10 وwbits=-10 وwbits=26 تضبط جميعها حجم النافذة على 1024 بايت. أحجام النوافذ الصالحة هي من 5 إلى 15 ضمنًا (وتقابل 32 إلى 32 كيلوبايت).

تقابل القيم السالبة لـ wbits بين -5 و-15 وضع الإخراج "الخام"، وتقابل القيم الموجبة بين 5 و15 وضع إخراج zlib، وتقابل القيم الموجبة بين 21 و31 وضع إخراج gzip.

راجع توثيق CPython الخاص بـ zlib لمزيد من المعلومات حول الوسيط wbits. لاحظ أن MicroPython يسمح بأحجام نوافذ أصغر، وهو ما يكون مفيدًا عندما تكون الذاكرة محدودة مع الاستمرار في تحقيق مستوى معقول من الضغط. كما أنه يسرّع الضاغط. راجع المزيد من التفاصيل الخاصة بـ MicroPython في توثيق الوحدة deflate.