hopfer is a Python-based GUI application that implements a wide range of halftoning algorithms from scratch primarily meant for printmaking purposes.
Note: Version 1.0 is a complete rewrite in QtQuick. An updated demo is coming soon!
hopfer is a digital halftoning tool built with QtQuick for the GUI, while leveraging NumPy and Cython for high-performance halftoning.
Originally developed as part of my PhD research on digital halftoning for analog printmaking techniques, hopfer is designed primarily for this purpose. While it may have applications in image compression and visual effects, these are not its main focus.
At present, hopfer does not support palette-based halftoning or multi-level dithering, and there are no plans to add these features.
- A variety of halftoning algorithms, including:
- Fixed threshold
- Local thresholds
- Random dithering
- Bayer dithering
- Clustered dot halftoning
- Error diffusion dithering
- Variable error diffusion dithering
- EDODF dithering
- Basic non-destructive image editing tools, such as:
- Rotation
- Brightness & contrast
- Blurring
- Denoising
- Sharpening
- Support for a wide range of image formats, including:
- PNG, JPEG, BMP, TIFF, WebP and more (anything supported by OpenCV)
Not sure yet.
git clone https://github.com/crunchpaste/hopfercd hopferpip install .hopferThe project relies on the following awesome open-source libraries. I extend my thanks to their maintainers and contributors!
-
numpy: GitHub LinkThe fundamental package for scientific computing with Python.
-
Cython: WebsiteAn optimising static compiler for Python.
-
opencv-python: GitHub LinkUsed for image processing and encoding/decoding.
-
requests: GitHub LinkA simple, yet elegant, HTTP library.
PySide6: Documentation LinkThe official Python bindings for the Qt framework, used to build the GUI.
-
makeself: GitHub LinkUsed for creating the Linux installer.
-
Nuitka: WebsiteUsed for compiling the application into an executable.
-
platformdirs: GitHub LinkUsed for determining standard, cross-platform directories for storing image and configuration data.
-
setproctitle: GitHub LinkAllows a process to change its title.
Enjoy halftoning!
