Not just the Windows drawing API, but essentially any drawing API requires that images be decompressed. Some sprite sheets are particularly egregious. I've seen sprite sheets with dozens of 32x32 sprites stacked above each other, and a single wide (let's say 1024x32) sprite at the bottom. This can give you a sprite sheet which is 1024x2048, decompressing to 8 MB, with literally 97% of the data being blank pixels. Fixing this on the browser side is very hard - it's a content problem.
The solution is to lay out sprite sheets to minimize blank space. Rearranging the sprites can easily get the number of blank pixels down to ~5-10%, thus saving ~7 MB, in essentially all browsers.
The solution is to lay out sprite sheets to minimize blank space. Rearranging the sprites can easily get the number of blank pixels down to ~5-10%, thus saving ~7 MB, in essentially all browsers.