[HN Gopher] Convert photos to Atkinson dithering
___________________________________________________________________
Convert photos to Atkinson dithering
Author : nvahalik
Score : 408 points
Date : 2025-06-07 20:33 UTC (1 days ago)
(HTM) web link (gazs.github.io)
(TXT) w3m dump (gazs.github.io)
| JKCalhoun wrote:
| 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...
| dev_chhatbar wrote:
| 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!
| larodi wrote:
| Is it the same Atkinson that died today and is this a tribute ?
| throwanem wrote:
| Yes, he invented* the algorithm. One assumes it must be.
|
| * Corrected from 'discovered;' see below.
| zahlman wrote:
| _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.
| 4b11b4 wrote:
| That's a good clarification
| throwanem wrote:
| I appreciate the correction.
| baq wrote:
| The algorithm, including the precious weights, can exist
| outside our universe. It doesn't need matter, it only needs
| maths.
|
| Discovered is correct.
| throwanem wrote:
| Bold to say anything "can exist outside our universe" as
| though one were in a position to know. Do you often visit
| the Realm of Forms?
| zahlman wrote:
| 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.
| larodi wrote:
| 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.
| throwanem wrote:
| 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...
| 57473m3n7Fur7h3 wrote:
| 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...
| throwanem wrote:
| 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...'
| 57473m3n7Fur7h3 wrote:
| > CoffeeScript
|
| It was acceptable in the 2010s
|
| It was acceptable at the time
|
| :p
|
| https://www.youtube.com/watch?v=dOV5WXISM24
| throwanem wrote:
| 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.
| 57473m3n7Fur7h3 wrote:
| It's a reference to the linked song. One of my favorite
| songs :D
| dolmen wrote:
| CoffeScript? This is the kind of task where a coding agent
| should be helpful.
| throwanem wrote:
| For a tiny PR where 90% of the complexity will most
| likely be resurrecting an ancient toolchain?
| amelius wrote:
| If you want to do this in Python, there's:
|
| https://github.com/tgray/hyperdither
| kinduff wrote:
| When I scroll, the images in the README get a brown color.
| ddingus wrote:
| I just converted my home stereo. Pioneer, so lots of brushed
| metal. It looks really great at 2560x1440. Great dither.
| AndrewStephens wrote:
| 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-...
| shrinks99 wrote:
| Woah cool web component!
| kergonath wrote:
| Dithering at the pixel level on a retina screen is quite
| something. I quite like the style on some pictures, not so on
| others. They have a weird modern old-fashioned look and the
| individual dots are not as distracting as in actually old
| pictures.
| ksr wrote:
| Cute UI! GitHub link of demo: https://github.com/gazs/canvas-
| atkinson-dither
| nedt wrote:
| 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.
| CaliforniaKarl wrote:
| 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
| lionkor wrote:
| It's been updated and now goes to the correct page
| gcanyon wrote:
| What am I doing wrong? I import a photo, I click save to desktop,
| and I get an unidentified file in an unknown format.
| busymom0 wrote:
| I believe the file is missing a name and extension. If you
| rename the file with .png extension, then it works.
| gcanyon wrote:
| HA! For some reason it never occurred to me that it would be
| in a format the original Mac never knew. Thanks!
| kgbcia wrote:
| Would be great for eink/epaper devices.
| 9d wrote:
| Sorry but where did you get the JS/CSS for this? It's _so small._
| meindnoch wrote:
| Believe it or not, you can write both CSS and JS by hand.
| 9d wrote:
| I do.
| minorbug wrote:
| 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.
| zdw wrote:
| Interesting that one of the size options is 512x384, not 512x342
| which was the original mac resolution.
| gcanyon wrote:
| I think that's not a coincidence.
| PlunderBunny wrote:
| 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.
| RodgerTheGreat wrote:
| A similar tool I wrote several years ago:
| http://beyondloom.com/tools/dith.html
| htk wrote:
| Thank you for posting this. Very nostalgic!
| corytheboyd wrote:
| Very, very perfect, I love it
| franze wrote:
| 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.
| deverman wrote:
| Thanks I tried a bunch of my favorite photos in this too.
| amai wrote:
| Why not Sierra?
|
| https://tannerhelland.com/2012/12/28/dithering-eleven-algori...
| p_l wrote:
| I guess it was originally nostalgia for early Mac, and
| resurfaced because Bill Atkinson had just died.
| collingreen wrote:
| I really enjoyed this article thank you for linking it.
| amai wrote:
| Then you might enjoy this one, too:
|
| https://surma.dev/things/ditherpunk/
___________________________________________________________________
(page generated 2025-06-08 23:01 UTC)