On the Bubble.ro website, there's an interesting tutorial that guides you through the creation of a histogram for any image (that PHP can handle) automatically with a little GD functionality.

The algorithm to calculate the histogram for an image is pretty straight forward if you know how to extract the RGB value of each pixel, by counting the number of pixels of each value (and then divide by the total number of pixels in order to get a normalized value).

They share the simple script that grabs the image's data, analyzes it, and, superimposed on one corner of it, places the histogram image. They have the full source and examples available for download.