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.