This can be done for free using GIMP.
It uses the ability of GIMP to have each layer a different size.
I created the following layers sized correctly.
- 256x256 will be saved as 32bpp 8bit alpha
- 48x48 will be saved as 32bpp 8bit alpha
- 48x48 will be saved as 8bpp 1bit alpha
- 32x32 will be saved as 32bpp 8bit alpha
- 32x32 will be saved as 8bpp 1bit alpha
- 32x32 will be saved as 4bpp 1bit alpha
- 16x16 will be saved as 32bpp 8bit alpha
- 16x16 will be saved as 8bpp 1bit alpha
- 16x16 will be saved as 4bpp 1bit alpha
Notes
- You may need to check other resources to confirm to yourself that this is a sensible list of resolutions and colour depths.
- Make sure you use transparency round the outside of your image, and anti-aliased edges. You should see the grey checkerboard effect round the outside of your layers to indicate they are transparent
- The 16x16 icons will need to be heavily edited by hand using a 1 pixel wide pencil and the eyedropper tool to make them look any good.
- Do not change colour depth / Mode in GIMP. Leave it as RGB
- You change the colour depths when you save as an .ico - GIMP pops up a special dialog box for changing the colour settings for each layer