I have over 500 pictures that I need to watermark with text that will be different for every image. For example, if I have a picture of a building I want to watermark the Name or Address of this building. I have the unique information saved in an excel file with the image file name. Now after searching for the past three days I have not come across a tool that can batch watermark unique text for each picture. I am primarily running on a Windows, and I am comfortable using Command Line to complete this process. I am also willing to spend some money on a tool to do this so it doesn't need to be free and/or open source.
You could do this with the ImageMagick convert command from a batch file it will allow you to apply text to a file, convert the type, rescale, etc., all in a single operation - it is also free.
Alternatively you could use python, PIL (the python image library) or Pillow (a fork of PIL) and xlrd to do the whole job automatically including reading from the excel files. These are also free tools but will take a little more learning on your part. I would strongly recommend taking a backup of all your images before trying any operations on them.
Just to add - seeing some of the comments on the original question that all the tools that I mention in the answer above are:
Maybe too late, but I stumbled over this question 2 weeks ago and found a solution by doing some coding:
I managed to solve a similar issue with bulkWaterMark and .NET, where you can watermark dynamical text via a feature called expressions. I used the Freeware version of the tool and coded a custom expression context plug-in that loads data from an xml file where image informations are stored. Then I wrote an expression that takes the current image's filename as parameter and looks it up in the xml file - all done in C#.
The problem was that there is no SDK documentation available and I'm also not sure if this plug-in interface is officially public, but you just have to inherit 2 or 3 classes and override some methods to inject your own code into the application. It worked like a charm then.
You just need to reference the assembly PMlabs.GrfX.Framework and create your own implementation of these three classes:
The Expression class is the function that is called when an image gets rendered. The context holds multiple expressions and the plug-in class holds the context. Just make sure to implement everything in the abstract Expression class, the others are just plumbing code.
After compiling your plug-in assembly put it into the bin/plugins folder of your bulkWaterMark installation.
Another edit: Published a simplified code of my solution at Github today: https://github.com/barnacleboy/bulkWaterMarkExpressionPlugin