11 ms·
Convert photos to Atkinson dithering
- JKCalhoun 1y agoStill 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/10f2332b5c11dc4a585dd9fe9dbc258d303cf0ba/documentation/DisplaySample.png https://github.com/EngineersNeedArt/SystemSix/blob/10f2332b5...
- dev_chhatbar 1y agoThat 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!
- AIFounder 1y ago[dead]
- AIFounder 1y ago[dead]
- larodi 1y agoIs it the same Atkinson that died today and is this a tribute ?
- throwanem 1y agoYes, he invented* the algorithm. One assumes it must be. * Corrected from 'discovered;' see below.
- zahlman 1y agoInvented 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.
- throwanem 1y agoThe 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/HTMLAnchorElement/download https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorE...
- 57473m3n7Fur7h3 1y agoIn 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 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/HTMLAnchorElement/download https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorE...
- throwanem 1y agoOh, 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 1y ago> CoffeeScript It was acceptable in the 2010s It was acceptable at the time :p https://www.youtube.com/watch?v=dOV5WXISM24 https://www.youtube.com/watch?v=dOV5WXISM24
- throwanem 1y agoNor 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.
- amelius 1y agoIf you want to do this in Python, there's: https://github.com/tgray/hyperdither https://github.com/tgray/hyperdither
- kinduff 1y agoWhen I scroll, the images in the README get a brown color.
- deleted 1y ago[deleted]
- ddingus 1y agoI just converted my home stereo. Pioneer, so lots of brushed metal. It looks really great at 2560x1440. Great dither.
- AndrewStephens 1y agoThis 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-accurate_atkinson.html https://sheep.horse/2023/1/improved_web_component_for_pixel-...
- shrinks99 1y agoWoah cool web component!
- kergonath 1y agoDithering 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.
- AndrewStephens 1y agoThanks. I originally just wanted pixel-to-pixel dithering (quite difficult with modern browsers and retina class displays) but after I saw the results I knew I needed to add lower resolutions as well. It looks really good with some images, especially photos with lots of details - almost like a high-quality printed magazine. However you are right that the extra detail can be distracting to the eye.
- ksr 1y agoCute UI! GitHub link of demo: https://github.com/gazs/canvas-atkinson-dither https://github.com/gazs/canvas-atkinson-dither
- nedt 1y agoDon'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 1y agoThere'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 https://github.com/gazs/canvas-atkinson-dither/issues/2
- deleted 1y ago[deleted]
- lionkor 1y agoIt's been updated and now goes to the correct page
- gcanyon 1y agoWhat am I doing wrong? I import a photo, I click save to desktop, and I get an unidentified file in an unknown format.
- kgbcia 1y agoWould be great for eink/epaper devices.
- 9d 1y agoSorry but where did you get the JS/CSS for this? It's so small.
- minorbug 1y agoHere'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 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.
- kristianp 1y ago> MacPaint images have a fixed format: 576 x 720 pixels resolution Were they really fixed? It says this on wikipedia, but there's no citation.
- zdw 1y agoInteresting that one of the size options is 512x384, not 512x342 which was the original mac resolution.
- gcanyon 1y agoI think that's not a coincidence.
- PlunderBunny 1y agoThe very first Mac really was 512x342 [0] 0. https://512pixels.net/2025/05/original-macintosh-resolution/ 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 1y agoA similar tool I wrote several years ago: http://beyondloom.com/tools/dith.html http://beyondloom.com/tools/dith.html
- htk 1y agoThank you for posting this. Very nostalgic!
- corytheboyd 1y agoVery, very perfect, I love it
- deleted 1y ago[deleted]
- franze 1y agoI wanted to learn a bit more about that algo, so https://atkinson.franzai.com/ https://atkinson.franzai.com/ - I double checked through some AIs so I hope it is factually correct.
- deverman 1y agoThanks I tried a bunch of my favorite photos in this too.
- amai 1y agoWhy not Sierra? https://tannerhelland.com/2012/12/28/dithering-eleven-algorithms-source-code.html https://tannerhelland.com/2012/12/28/dithering-eleven-algori...
- p_l 1y agoI guess it was originally nostalgia for early Mac, and resurfaced because Bill Atkinson had just died.
- collingreen 1y agoI really enjoyed this article thank you for linking it.
- amai 1y agoThen you might enjoy this one, too: https://surma.dev/things/ditherpunk/ https://surma.dev/things/ditherpunk/