Skip to content

A high-performance dithering tool with extensive algorithms, real-time palette shifting, and LUTs. Built with Python, PySide6, and Numba for a fluid workflow.

License

dovvnloading/Dither-Pro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Dither-Pro


Python Version PySide6 License

Dither-Pro is a high-performance, feature-rich dithering tool designed for artists and developers seeking granular control over image processing. Built with Python and a modern PySide6 interface, it provides a responsive and powerful workflow for transforming images into stylized, limited-color works of art. The backend is heavily optimized with Numba and NumPy for a fluid, real-time user experience.

Dither-Pro Application Screenshot

Features

  • Extensive Algorithm Library: Go beyond the basics with a wide selection of dithering algorithms, each providing a unique aesthetic:
    • Error-Diffusion: Floyd-Steinberg, Atkinson, Jarvis, Judice, Ninke (JJN), Stucki
    • Ordered: Bayer, Clustered Dot Halftone
    • Stochastic: Random
  • Complete Palette Control: Precisely define the color space of your output image.
    • Automatic: Generate an optimal palette directly from the source image.
    • Grayscale: Convert the image to a specified number of grayscale tones.
    • Predefined: Apply classic, retro palettes like Game Boy, PICO-8, and CGA.
  • Real-Time Post-Processing: Interactively adjust the dithered output without re-rendering.
    • HSV Color Adjustment: Modify the Hue, Saturation, and Value of the final dithered palette in real-time.
    • Color Grading LUTs: Apply post-process Look-Up Tables (LUTs) for effects like Sepia, Invert, and Cool Tone.
  • Fine-Grained Adjustments: Control the number of output colors (2-256) and the overall strength of the dithering effect.
  • Modern & Responsive UI: A clean, tabbed dark-theme interface built with PySide6 that is intuitive and scales correctly.
  • High-Performance Backend: Core algorithms are JIT-compiled with Numba or vectorized with NumPy to handle large images with minimal delay.

Getting Started

Follow these instructions to get Dither-Pro running on your local machine.

Prerequisites

  • Python 3.8 or newer
  • pip (Python package installer)

Installation & Usage

  1. Clone the repository:

    git clone https://github.com/dovvnloading/Dither-Pro.git
    cd Dither-Pro
  2. Create a virtual environment (Recommended):

    python -m venv venv
    # On Windows
    .\venv\Scripts\activate
    # On macOS/Linux
    source venv/bin/activate
  3. Install the required dependencies: A requirements.txt file is provided for easy installation.

    pip install -r requirements.txt

    The dependencies are: PySide6, numpy, numba, Pillow.

  4. Run the application:

    python Dither_app.py

Development

For developers using Visual Studio, a .sln solution file is included in the repository for convenience. This allows you to open the project directly in Visual Studio with the Python workload installed.

The project is structured into four main files for a clean separation of concerns:

  • Dither_app.py: The main application entry point, containing all UI code (QMainWindow).
  • worker.py: Defines the QObject worker for multithreaded image processing.
  • algorithms.py: Contains all dithering algorithms and performance-critical functions. This module is UI-agnostic.
  • utils.py: Contains helper classes and functions, such as the LUT application logic.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A high-performance dithering tool with extensive algorithms, real-time palette shifting, and LUTs. Built with Python, PySide6, and Numba for a fluid workflow.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages