--- id: epaper-dithering version: "6.0.0" license: MIT license_treatment: permissive maintenance: active --- # epaper-dithering — Dithering algorithms for e-paper/e-ink displays License: permissive · Maintenance: active · Downloads: 89.3K/mo ## What it is and what it does epaper-dithering is a Python library that dithers images for e-ink and e-paper displays with limited color palettes. It wraps a Rust core to apply one of ten dithering algorithms (from simple ordered dithering to Jarvis-Judice-Ninke) across ten color schemes ranging from monochrome to 7-color Spectra displays. The library uses perceptually weighted OKLab color matching to preserve hue and includes pre-dithering adjustments for exposure, saturation, shadows, highlights, dynamic-range compression, and gamut compression. Typical use is loading an image with pillow, calling dither_image() with a chosen color scheme and algorithm, and saving the result. The library handles RGBA compositing automatically and supports serpentine scanning to reduce directional artifacts. It targets developers building e-paper display applications who need fast, high-quality image conversion without manual color space tuning. Use it for: - Convert photographs for e-ink price tags or shelf displays that support 3–7 color palettes. - Batch-process images for e-paper photo frames with grayscale or limited-color output. - Prototype dithering results across multiple algorithms and color schemes to find the best visual match for a specific display. - Apply tone and gamut compression to images before dithering to compensate for e-paper's limited luminance range. - Generate monochrome or 3-color dithered previews for testing e-ink display firmware or hardware designs. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Converts images to dithered output optimized for e-ink displays with limited color palettes, using compiled Rust algorithms for fast processing. Yes, if you are building e-paper or e-ink display applications. The library is actively maintained, has no known vulnerabilities, uses a permissive MIT license, and provides a well-documented API with pre-built wheels for modern Python versions. Install friction is moderate but manageable. Not relevant for general image processing or non-display use cases. ## Install pip install epaper-dithering uv add epaper-dithering poetry add epaper-dithering ## Installing epaper-dithering Before you install: Medium install friction due to compiled Rust extension requiring platform-specific wheels, but wheels are pre-built for Python 3.11–3.13 across macOS, Linux (x86_64, aarch64, armv7l), Windows, and musl systems. Active maintenance with recent release. License in practice: MIT license permits unrestricted use, modification, and distribution in commercial and private projects with minimal obligations. Quickstart: from epaper_dithering import dither_image, ColorScheme, DitherMode import pillow image = pillow.Image.open("photo.jpg") dithered = dither_image(image, ColorScheme.BWR, mode=DitherMode.FLOYD_STEINBERG) dithered.save("output.png") Requires Python 3.11 or later; pillow must be installed as a runtime dependency. Verify before relying: - Whether the ~30ms performance claim for 800×480 images holds across all supported platforms and dithering modes. - Whether OKLab color matching actually eliminates the achromatic-attractor bug mentioned, or if this is a relative improvement. - Exact behavior and visual quality differences across the ten dithering algorithms in practice. ## Package facts - License: MIT (permissive) - Python support: supports_current - Install friction: medium - Maintenance: active - Downloads: 89.3K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags e-ink image dithering, epaper display conversion, limited palette quantization, error diffusion dithering, e-paper color schemes, e-ink-display, image-quantization, rust-extension [View on SkillFed](https://skillfed.io/packages/epaper-dithering) · [View on PyPI](https://pypi.org/project/epaper-dithering/)