Convert photos to Atkinson dithering
362 points
17 hours ago
| 17 comments
| gazs.github.io
| HN
JKCalhoun
17 hours ago
[-]
Still my favorite B&W dither algorithm.

The university had a B&W flatbed scanner attached to a Mac running ... a Hypercard stack? that allowed you to scan an image and get a B&W image.

A clipart book I picked up from the college bookstore and a quick scan and I had a "logo" for the Mac shareware games I started writing in 1988 or so.

At the time I didn't;t realize how really ... nice .. Atkinson's algorithm is. But when, later, I tried dithering with other algos I saw how nice the diffusion was in Bill's code.

More recently I was playing with an eInk calendar project and wanted an "Atkinson-esque" series of images of the Moon in various phases. So I found a site very like the linked one to Atkinson-dither the moon photos I found [1].

[1] see the moon in screenshot: https://github.com/EngineersNeedArt/SystemSix/blob/10f2332b5...

reply
dev_chhatbar
1 hour ago
[-]
That is honestly beautiful! Is there a place where I could see some of Bill's code? I would like to perhaps play around w it on my own time and learn a thing or two!
reply
nedt
16 hours ago
[-]
Don't click the "as follows" in the info dialog. Looks like this wasn't updated in a while and since then the link became NSFW.
reply
CaliforniaKarl
9 hours ago
[-]
There's no guarantee that the site's creator is (or becomes) aware of this thread, so when possibly it's nice to give them a heads-up! I have just done so: https://github.com/gazs/canvas-atkinson-dither/issues/2
reply
lionkor
6 hours ago
[-]
It's been updated and now goes to the correct page
reply
throwanem
17 hours ago
[-]
The implementation is excellent, and could be slightly improved by giving a default name and .png extension to the downloaded file, by passing a value to the "download" property on the anchor. See https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorE...
reply
57473m3n7Fur7h3
16 hours ago
[-]
In his defence, that attribute has been available in browsers since March 2017 according to your link [1], whereas the most recent commit in the repo for the dithering tool was in March 2016 by the looks of it.

https://github.com/gazs/canvas-atkinson-dither

He’s still active on GitHub though, in other repos. Maybe he will accept a pull request? :)

[1]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorE...

reply
throwanem
16 hours ago
[-]
Oh, I assumed it had been recently built and probably posted today by its author given the news and the lack of a year in the title. I'll open a PR.

edit: I might open a PR. 'CoffeeScript...now there's a name I've not heard in a long time. A long time...'

reply
57473m3n7Fur7h3
16 hours ago
[-]
> CoffeeScript

It was acceptable in the 2010s

It was acceptable at the time

:p

https://www.youtube.com/watch?v=dOV5WXISM24

reply
throwanem
15 hours ago
[-]
Nor have I said there is anything wrong with it, only that it's been a long time. So reflexively to equate calling something old with calling it bad seems like a young man's game, but it has been some time since I had close experience of being one of those, also.
reply
57473m3n7Fur7h3
15 hours ago
[-]
It’s a reference to the linked song. One of my favorite songs :D
reply
dolmen
8 hours ago
[-]
CoffeScript? This is the kind of task where a coding agent should be helpful.
reply
minorbug
14 hours ago
[-]
Here's one I've been working on and off that lets you convert multiple images to MacPaint in a 400k MFS formatted disk image.

https://github.com/minorbug/mfsjs

I've had this project gathering a light layer of dust in my home directory for a couple months now. I used Gemini Deep Research to help produce the library, and I included the LLM-generated markdown for anyone who wishes to reproduce on other languages, improve upon it, etc.

reply
amelius
17 hours ago
[-]
If you want to do this in Python, there's:

https://github.com/tgray/hyperdither

reply
kinduff
10 hours ago
[-]
When I scroll, the images in the README get a brown color.
reply
franze
3 hours ago
[-]
I wanted to learn a bit more about that algo, so https://atkinson.franzai.com/ - I double checked through some AIs so I hope it is factually correct.
reply
AndrewStephens
17 hours ago
[-]
This implementation is great and the interface brings back memories.

I was wondering why my Atkinson dithering web-component[0] was getting more hits today - sad news. I’ve always thought that Atkinson dithering produces the nicest images on really crisp monitors like the original Mac - something about it just looks cool and 80s which is why I used it in a game last year.

[0] https://sheep.horse/2023/1/improved_web_component_for_pixel-...

reply
shrinks99
13 hours ago
[-]
Woah cool web component!
reply
larodi
17 hours ago
[-]
Is it the same Atkinson that died today and is this a tribute ?
reply
zahlman
17 hours ago
[-]
In a sense, but the first commit in the repository was 15 years ago - it's not something that someone whipped up in response to the news.
reply
larodi
6 hours ago
[-]
I adore dither as a tool for my designs. Kudos to Atkinson and everyone involved in the introduction of these algos. They mean a whole world of childhood to me, and a lot more.

p.s. dithermark.com is super cool also.

reply
throwanem
17 hours ago
[-]
Yes, he invented* the algorithm. One assumes it must be.

* Corrected from 'discovered;' see below.

reply
zahlman
17 hours ago
[-]
Invented the algorithm. The choice and arrangement of weights is a matter of fine-tuning to balance practical concerns - not some natural law of mathematics that could be figured out.
reply
4b11b4
17 hours ago
[-]
That's a good clarification
reply
throwanem
16 hours ago
[-]
I appreciate the correction.
reply
kgbcia
15 hours ago
[-]
Would be great for eink/epaper devices.
reply
RodgerTheGreat
14 hours ago
[-]
A similar tool I wrote several years ago: http://beyondloom.com/tools/dith.html
reply
ksr
16 hours ago
[-]
reply
zdw
14 hours ago
[-]
Interesting that one of the size options is 512x384, not 512x342 which was the original mac resolution.
reply
PlunderBunny
12 hours ago
[-]
The very first Mac really was 512x342 [0]

0. https://512pixels.net/2025/05/original-macintosh-resolution/

Edit: Sorry - I misread what you were saying and intended this as a correction, but you had it right all along.

reply
gcanyon
13 hours ago
[-]
I think that's not a coincidence.
reply
gcanyon
15 hours ago
[-]
What am I doing wrong? I import a photo, I click save to desktop, and I get an unidentified file in an unknown format.
reply
busymom0
15 hours ago
[-]
I believe the file is missing a name and extension. If you rename the file with .png extension, then it works.
reply
gcanyon
13 hours ago
[-]
HA! For some reason it never occurred to me that it would be in a format the original Mac never knew. Thanks!
reply
ddingus
17 hours ago
[-]
I just converted my home stereo. Pioneer, so lots of brushed metal. It looks really great at 2560x1440. Great dither.
reply
corytheboyd
9 hours ago
[-]
Very, very perfect, I love it
reply
htk
13 hours ago
[-]
Thank you for posting this. Very nostalgic!
reply
9d
15 hours ago
[-]
Sorry but where did you get the JS/CSS for this? It's so small.
reply