Batch Process Images
Dave Viner's scripting.com fame was published about his success with ImageMagick . I think it's free.
source to share
If you want to flip your own solution (and I guess why you marked the question with "C #") the GDI + stuff built into the framework (System.Drawing and its children) is quite powerful, more than enough to accomplish that , what you need. The advantage of this approach is that you can define your own transformations and en-mass them if you choose to code it that way.
source to share
Check out the Netpbm collection . It contains over 300 tools and supports hundreds of graphic formats. You can easily experiment with the process you want to complete with the tools one by one and then link them together with the script. It's open source, so if you want the best performance, you can even package the code you are interested in together in a standalone program.
You usually work with netpbm by piping tools. So you have to use pamscale to scale the image and pamcomp to watermark the result. If the watermark is specific to each image, you can use pbmtext to create it.
source to share
There are many examples of how to do this kind of manipulation with C #, it is not very difficult.
Here are two articles from Joel Neubeck that resize and watermark an image.
http://www.codeproject.com/KB/GDI-plus/imageresize.aspx
http://www.codeproject.com/KB/GDI-plus/watermark.aspx
You can put them together and write a simple program to process all the images when you apply these operations.
source to share