Rather than change the background for the entire site, consider simply framing the photo with a background color "matting", and then making the rest of the site background match the overall sight design.
This gives you greater options:
- For starters, it means you can avoid having the entire site be a boring neutral background.
- It lets you pick a different background colors for text and for photos. For text, high contrast is crucial for readability, and black text on a white background is best.
- You don't necessarily have to be locked into a single background color for all photos. With the right website engine you could conceivably pick and choose the best background for the particular photo.
Here's two examples from one of my websites. The site background is pink, though the content is black-on white. Every photo though is separated from the rest of the content by a series of borders. Starting from innermost to outermost, I have:
- The photo itself. The colors and luminosity, of course, can be anywhere. I picked a very dark and a very light one to illustrate the range.
- A thick border, either black or white, that contrasts & frames the photo. The dark photo gets the white border, and the light one gets the black border.
- A thinner white border. Note that this is only noticeable when the above border is back; when it's white, it visually merges into one (though it's still separate in the HTML/CSS). The purpose of this is to ensure that there's some separation between the dark of the dark photo or thick black border and:
- The outermost 1px black border. This border separates the photo (regardless of whether it's dark or light) from the white of the background.
Overall, I think it's too difficult to get a background that looks good with the various photos, and works well with text, and fits into an appealing sight design. With some clever design tricks, you don't have to try.