Yes. Photoshop does the correct thing when going 8bit via the "Mode" menu. On the other hand, if you do "Export As → PNG" and check the "Smaller file (8-bit)" checkbox, it does NOT dither, and it produces banding artifacts.
> Consider that a grayscale gradient can only have 256 distinct levels.
This is true, but also keep in mind that for print and low dynamic range displays we humans only need approximately 256 levels, as long as the levels are perceptually spaced out evenly. 8 gamma corrected bits per channel actually made sense for a long time, for both print and for TVs & monitors, until HDR displays came along, relatively recently. Needing dithering for 8 bit images displayed on a 10 bit display is perhaps less surprising than needing dithering even when your display and your printer are both only 8 bits, right?
HDR is what changed - it requires more than 8 bits per pixel, by definition!
Again, if you only have LDR (low dynamic range), the human visual system’s “just noticeable difference” or JND in the perception literature demonstrates we only need 8 bits when looking at things under ‘indoor’ lighting conditions. You don’t need dithering if you use LDR on a single specific 8-bit display. You do need dithering when either moving to a different display than the one you started with, or using an HDR display - capable of displaying more than 8 bits of color resolution.
Like ~99% of images you encounter on the Web.
I tried doing something similar a couple of years ago and gave up after running into the exact same issues in the post. It's really difficult to replicate proper halftoning on a computer screen without getting moiré patterns and weird artifacts because of PPI, aliasing, and other stuff. Beyond that, print and screens are just fundamentally different ways of rendering things.
Surface-stable fractal dithering:
https://www.youtube.com/watch?v=EzjWBmhO_1E
And the technical deep dive:
To learn more about halftones, I'd recommend PDF specification, pages 303-307.
https://opensource.adobe.com/dc-acrobat-sdk-docs/standards/p...
>But if you care about the method this is not dithering.
> I looked it up, the translation in this case is, in fact, simply "half tones" :^)
Unhalftoning is called descreening.
I use this:
> This image features a close-up abstract scene styled with a classic halftone (Ben-Day dot) pop-art filter ...
https://share.gemini.google/O5eqZOKxwzw3
> This image is a halftone/thermal print styled photograph. The photo features a group of four people posing closely together indoors or in front of a windowed backdrop: