Something I learned (or, I guess, re-learned) this year is how important it is to pay close attention to the bit depth of images. Way back in the day, we used to obsessively choose between 2-, 4-, or 8-bit color depth on our GIFs, because when lots of users were using dialup modems to surf the web, every kilobyte counted.
Now that a huge number of us access the web via broadband, guess what? Every kilobyte still counts. Because not everyone has access to broadband, particularly in the mobile space; and also, any time we can shave off page rendering is worth pursuing. I’d assumed that optimization tools handled things as trivial as color depth optimization that for us, but discovered I was wrong there.
This is particularly true for PNGs. By default, lots of image editing tools save PNGs with 2^24 color depth, just in case.
For a photograph, that makes some sense (though if it’s a photograph, you should probably save it as JPG or WebP) but for things like logos and icons, that’s approximately 2^24 more colors than you’re going to be using.
So in Acorn, my image editor of choice,
Here’s an example:
That PNG at full-color depth is about 379KB. Restricted to a palette of 32 colors, it’s 61KB. And that’s just at the export time: once I run them through ImageOptim, the optimized sizes are 359KB and 48KB. That’s a weight savings of about 85%, just by lowering the color depth. And if I deployed the image and discovered it needs a few more colors, I could re-run the process to use 64 colors: the final size, in that case, is 73KB, still enormous savings.
Reducing color depth by eye is clearly more onerous than throwing an optimization script at a directory of images, but in my experience, the results are much more efficient in terms of image weight and therefore user experience. And that’s really what all this is about, isn’t it?
More than once I’ve converted a graphic improperly saved as a JPEG back to discrete colors using GIMP. I find that at low color depths an image tends to alternate between looking good and not. 5 colors might look almost perfect; 6 might look awful; then 7 looks perfect. So maybe try an odd number of colors as well as even, in case the image looks better.
I use tinypng.com for this.
There’s also pngquant which can be used to optimize PNGs in a lossy way: https://pngquant.org/