I do it dynamically with a PHP app I wrote that sits on my web server. It loads my original image out of a protected directory, and creates a new graphic on the fly with the watermark. My original remains untouched, in case I want to use it for something else.
For example: