Software Recommendations Stack Exchange is a question and answer site for people seeking specific software recommendations. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|improve this question
Welcome to Software Recommendations! We will need a bit more information to give good recommendations here. Please take a look at What is required for a question to contain "enough information"? Then please edit your question and see if you can incorporate some of these improvements at minimum: What OS or is a web-app acceptable? GUI only or CLI only or either? – Nick Wilde Mar 8 '14 at 17:27
Thanks, I should have done that before I posted. I originally posted this question on but that seemed to make some people upset over there. – njackson.gis Mar 8 '14 at 18:12
@njackson.gis Not "upset". It was just the wrong place for it. – mattdm Mar 8 '14 at 18:14
@mattdm i was not talking about your post. its the helpful one. I was referring to the other posts. I had seen a lot of question about watermarking and processing images on that site and that's why I decided to post there first. thanks for your suggestion! – njackson.gis Mar 8 '14 at 18:20
@njackson.gis Is reading the excel file a requirement or would you be okay to have to save that as a CSV or some other format? – Nick Wilde Mar 8 '14 at 18:56
up vote 3 down vote accepted

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.

e.g. convert rose.jpg -draw "text 25,60 'By Any Other Name'" outdir/rose.jpg

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:

  • Free (Gratis)
  • Free (Open Source)
  • Cross platform, specifically:
    • ImageMagik command line graphics manipulation:
      • Binary downloads for Unix, Mac OS(X), Windows & Linux
      • Source available so you can probably build it for just about anything else.
    • Python Programming Language:
      • Windows binaries available
      • Usually already installed on OS(S), Linux, Unix & many others
      • Ditto the source source
    • PIL/Pillow Image Manipulation Library:
      • Binaries available for Windows
      • Installed from source if you have Python/PIP on other platforms
    • XLRD Python Excel Reader Library
      • Source distribution works on any python platform
share|improve this answer
Thanks Steve. I'll give this a try. – njackson.gis Mar 8 '14 at 18:13
Steve this does the trick. I just converted my excel to .txt and then create a batch file to add the text. Thanks for pointing me to this software! – njackson.gis Mar 8 '14 at 21:35
Gland to hear it worked for you @njackson.gis – Steve Barnes Mar 8 '14 at 22:08

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:

 - ExpressionsPlugIn<TExpressionContext>
 - ExpressionContext
 - Expression<TExpressionContext>

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:

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.