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