Ditherpunk 2 – beyond 1-bit

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • Onboard AI - ChatGPT with full context of any GitHub repo.
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern API for authentication & user identity.
  • marvin-framework

    Marvin Image Processing Framework provides features for processing images and videos in real-time.

    My understanding is that while "halftone" is an older term now, there was an in-between period where it meant any kind of dithering. Indeed, even on the page you linked you see people talking about Floyd-Steinberg and other kinds of dithering.

    Thanks for the link, although the best I could find was this[1] old Java file that's completely uncommented. I was hoping for some textual documentation.

    1: https://github.com/gabrielarchanjo/marvin-framework/blob/f50...


    Efficient, Easy to Use Thermal Printing & POS (Windows/Linux/OSX, WiFi/BT/USB/Ethernet)

    My receipt printer library[0] uses dithering for images since the printers are black and white but fairly high resolution. It looks pretty decent [1], much better than a plain black and white conversion. I learned about dithering while implementing this library, and it’s a great technique! I originally implemented a black and white filter and then Floyd-steinberg dither natively in c# but then ended up using a library for it since we needed image transforms as well.

    [0]: https://github.com/lukevp/ESC-POS-.NET

    [1]: https://user-images.githubusercontent.com/59696671/106924665...

  • Onboard AI

    ChatGPT with full context of any GitHub repo. Onboard AI learns any GitHub repo in minutes and lets you chat with it to locate functionality, understand different parts, and generate new code. Use it for free at app.getonboardai.com.

  • prism

    Colour management for Go (by mandykoh)

  • halftone

    Generate CMYK halftone images

    The StackOverflow answer above is referenced by various Python halftoning projects, which have documented or at least commented halftone code you may be interested in:



    I think grandparent post is right, that you’re looking for the terms like halftone, halftoning, digital halftoning, binary halftoning, and the like. These are the terms that show up in papers:


    Text discussion at Wikipedia: https://en.wikipedia.org/wiki/Halftone

    Having worked in digital press, I recall the term of art for a higher quality technique that came after “halftone screening” or “digital halftone” was “stochastic screening”:


    This prevented the tell-tale circle effect (moiré or rosette patterns) of traditional screening. We used it to print high quality magazine photography. It also worked on Mac Plus for rendering photography as a better dither for black and white dots of irregular or non-geometric photography — which brings us full circle to dithering.

    Using terms from Photoshop of the day, Pattern Dither uses a uniform pattern to represent levels of gray. Diffusion Dither uses a random pattern to represent levels of gray. Halftone Screen uses preset patterns (round, diamond, ellipse, line, square or cross) at frequencies and angles that can be varied as well.

    That brought another term to mind, “stippling”:


    Some more terms show up in this discussion on difference between halftoning and dithering:


NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts