zlib --- การบีบอัดและคลายการบีบอัด zlib

โมดูลนี้ช่วยให้สามารถบีบอัดและคลายการบีบอัดข้อมูลไบนารีด้วย อัลกอริธึม DEFLATE (ที่ใช้ทั่วไปในไลบรารี zlib และ gzip archiver)

Note

แนะนำให้ใช้ deflate.DeflateIO แทนฟังก์ชันในโมดูลนี้ เนื่องจากมีอินเทอร์เฟซสตรีมมิ่งสำหรับการบีบอัดและคลายการบีบอัด ซึ่งสะดวกและมีประสิทธิภาพหน่วยความจำมากกว่าเมื่อทำงานกับการอ่านหรือเขียนข้อมูลที่บีบอัดไปยังไฟล์ socket หรือสตรีม

ความพร้อมใช้งาน:

  • โมดูลนี้ ไม่ได้รวมอยู่ใน OpenMV Cam โดยค่าเริ่มต้น เนื่องจากฟังก์ชันซ้ำกับที่โมดูล deflate มีให้อยู่แล้ว

  • สามารถติดตั้งสำเนาได้ (หรือแช่แข็งลงในเฟิร์มแวร์กำหนดเอง) จาก micropython-lib (source) ดู การจัดการแพ็กเกจ สำหรับข้อมูลเพิ่มเติม เอกสารนี้อธิบายโมดูลนั้น

  • โมดูลนี้พึ่งพาโมดูล 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 dictionary และรูปแบบเอาต์พุต ขนาดหน้าต่างช่วยให้คุณแลกเปลี่ยนการใช้หน่วยความจำกับระดับการบีบอัด หน้าต่างที่ใหญ่กว่าจะช่วยให้ตัวบีบอัดอ้างอิงส่วนต่างๆ ที่อยู่ไกลกว่าในอินพุต รูปแบบเอาต์พุตคือ DEFLATE "raw" (ไม่มีส่วนหัว/ส่วนท้าย) zlib และ gzip โดยสองรูปแบบหลังรวมส่วนหัวและ checksum

สี่บิตต่ำของค่าสัมบูรณ์ของ wbits กำหนดลอการิทึมฐาน 2 ของขนาดหน้าต่าง DEFLATE dictionary ดังนั้นเช่น wbits=10, wbits=-10 และ wbits=26 ล้วนตั้งค่าขนาดหน้าต่างเป็น 1024 ไบต์ ขนาดหน้าต่างที่ถูกต้องคือ 5 ถึง 15 รวม (สอดคล้องกับ 32 ถึง 32k ไบต์)

ค่าลบของ wbits ระหว่าง -5 ถึง -15 สอดคล้องกับโหมดเอาต์พุต "raw" ค่าบวกระหว่าง 5 ถึง 15 สอดคล้องกับโหมดเอาต์พุต zlib และค่าบวกระหว่าง 21 ถึง 31 สอดคล้องกับโหมดเอาต์พุต gzip

ดู เอกสาร CPython สำหรับ zlib สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ wbits โปรดทราบว่า MicroPython รองรับขนาดหน้าต่างที่เล็กกว่า ซึ่งมีประโยชน์เมื่อหน่วยความจำมีข้อจำกัดในขณะที่ยังบรรลุระดับการบีบอัดที่สมเหตุสมผล นอกจากนี้ยังเร่งความเร็วตัวบีบอัด ดูรายละเอียดเพิ่มเติม ที่เฉพาะเจาะจงกับ MicroPython ในเอกสารโมดูล deflate