When I save a web-resolution image (for example, 1920×1024px), flat areas tints often have damaged shades of color. I'm saving in Photoshop CS4 with quality 2 in standard mode, because I need the files to be less than 300k. How can I make my JPEG images this small without the compression artefacts?
If you save a JPEG image with an extremely low quality level, you WILL get compression artifacts. Its just a simple fact of JPEG lossy compression. If you wish to avoid compression artifacts, use a higher quality setting than 2. You won't need to save at maximum quality, as most images can be saved with a fairly low quality setting without noticeable loss in detail or visible artifacts.
One thing to note is that smooth gradients and JPEG do not mix well. JPEG compresses small blocks of the image, and when it comes to smooth gradients, it tends to make all the pixels in a block the same or very similar colors. This creates distinct banding (posterization) that can be quite visible. The only way around this is to use a higher quality setting, however that will obviously increase your file size.
An excellent article that might be of help can be found here:
The above is for Lightroom, however the fundamental concept still applies to Photoshop. The important point from the article above is that the lower range of quality settings for JPEG tend to have a minor effect on image size, and it is only when you get to the upper few brackets that image size starts to climb by any significant degree. I would suspect that you could change your quality setting from 2 to 5 and only incur a small hit to your image size.
In your specific example: bump up the quality, or shrink the image, and strip out all metadata (including color profile information).
You're taking a image that is roughly 8MB in size (raw pixel data: 1920px x 1024px x 32bpp / 8b/M) and trying to shrink it to less than 300k, which is a reduction of over 26 times.
This is a difficult task to do without introducing some artefacts.
A quality level of 2 is going to create artifacts as JPEG compression is lossy and so the more you compress, the more you lose. Unfortunately, the only real way to avoid this is to minimize compression.
However, Photoshop (as of CS2) has an option to remove JPEG artifacts in the "Filters->Remove Noise" dialog. The success of it will, I suspect, vary somewhat, but it may help you cleanup the image. You will probably have to load the saved image into photoshop rather than use the one that is still there since it probably won't reflect the artifacts.
The other answers ("This is basically self-contradictory!") are good. However, I wanted to add something else you can try: you can apply a gaussian blur to the image after downsizing but before saving as JPEG. If you want to get fancy, use an L* a* b* colorspace and just blur the a and b channels, leaving L alone.
Although it's true that JPEG can produce blocky, posterized artifacts at strong compression levels, generally it has to "work hardest" when there's a lot of fine detail, and especially when that detail has strong contrast between color channels. Take a picture of bright red fall maple leaves against a strong blue sky and I guarantee you'll find artifacts even with surprisingly high-quality JPEG settings.
So, by blurring, you can reduce these details, and therefore reduce file size. This obviously degrades image quality, but you may find the result to be preferable to what you're doing now.