Zopfli for Python

0.4.1 · active · verified Sun Apr 05

Python bindings to the Zopfli Compression Algorithm, offering higher compression ratios than standard zlib or gzip at the cost of significantly slower compression time. It is primarily designed for pre-compressing static assets for web applications or other scenarios where file size is critical and compression is a one-off or build-time operation. Current version 0.4.1 requires Python 3.10+ and maintains an active release cadence, primarily driven by Python version compatibility and updates to the upstream C library.

Warnings

Install

Imports

Quickstart

Demonstrates basic Zopfli compression using both zlib and gzip formats, including decompression with standard library modules. Also provides a commented example for PNG optimization.

from zopfli.zlib import compress
from zopfli.gzip import compress as gzip_compress
import zlib
from io import BytesIO
import gzip

data = b"Hello World! This is some data to compress using Zopfli.\n" * 10

# Zlib compression
zlib_compressed_data = compress(data, numiterations=15)
print(f"Original size: {len(data)} bytes")
print(f"Zlib compressed size: {len(zlib_compressed_data)} bytes")
assert zlib.decompress(zlib_compressed_data) == data

# Gzip compression (note: does not mimic gzip module API directly)
gzip_compressed_data = gzip_compress(data, numiterations=15)
print(f"Gzip compressed size: {len(gzip_compressed_data)} bytes")
with gzip.GzipFile(fileobj=BytesIO(gzip_compressed_data)) as f:
    assert f.read() == data

# PNG optimization (example, requires an actual PNG file)
# from zopfli.png import optimize
# try:
#     with open('input.png', 'rb') as f_in:
#         optimized_png_data = optimize(f_in.read())
#     with open('output_optimized.png', 'wb') as f_out:
#         f_out.write(optimized_png_data)
#     print("PNG optimized successfully.")
# except FileNotFoundError:
#     print("Skipping PNG optimization: 'input.png' not found.")

view raw JSON →