IrfanView, as already suggested, is a great free tool. You can use it to shrink the file size of a photo several ways:
1. Crop the photo. Remove outer detail that isn't needed. Cropping is one of the few things in IrfanView that isn't intuitive. To crop, move the mouse to the upper left corner of the area in the photo that you want to
retain, then hold down the left button while moving to the lower right hand corner of that area. This will draw a rectangle around the area. If it is correct, click on Edit/Crop Selection, or hit Ctrl-Y to complete the crop.
2. Resize the photo. Use Image/Resize to reduce the physical size of the photo, which in turn will reduce its file size.
3. Change the color depth. Use Image/Decrease Color Depth/ 256 Colors or Image/Decrease Color Depth/ 16 Colors to reduce the color information in the photo. This will usually reduce the file size, sometimes significantly. It will also change its appearance to some degree, and so may not always be suited to the task.
4. Convert it to greyscale. Use Image/Convert To Greyscale. This turns a color photo into a black and white photo and will usually make a large reduction in the file size. Useful for things like track plans.
5. Convert it to two-color black and white. Use Image/Decrease Color Depth/2 Colors to turn it into a black and white drawing (no greys). Also useful for track plans, especially large track plans, which may be reduced enough in file size that you may even be able to post them in their original size.
Most of these techniques can be combined to further reduce the file size. I suggest cropping first, and if that doesn't reduce the file size sufficiently, then resize. Use color changes as a last resort.
Don't forget to use File/Save As to save the modified photo under a
new name.

I usually save to a new name at each step.