Adding Watermarks to Photographs using Python

in programming •  8 years ago 

At my current place of employment, we handle a lot of images which need watermarks on them. While I was experimenting with different watermark techniques, I found one that I really liked, using Python.  The company ultimately went a different direction, but I like the code, and think others might be able to use it.

This uses PIL, which is found in the Image library.

from PIL import Image
def create_watermark(image_path, final_image_path, watermark, hires=False):    main = Image.open(image_path)    mark = Image.open(watermark)    mark = mark.rotate(30, expand=1)    mask = mark.convert('L').point(lambda x: min(x, 25))    mark.putalpha(mask)    mark_width, mark_height = mark.size    main_width, main_height = main.size    aspect_ratio = mark_width / mark_height    new_mark_width = main_width * 0.4    mark.thumbnail((new_mark_width, new_mark_width / aspect_ratio), Image.ANTIALIAS)    tmp_img = Image.new('RGBA', main.size)    for i in xrange(0, tmp_img.size[0], mark.size[0]):        for j in xrange(0, tmp_img.size[1], mark.size[1]):            main.paste(mark, (i, j), mark)    if not hires:        main.thumbnail((758, 1000), Image.ANTIALIAS)        main.save(final_image_path, 'JPEG', quality=75)    else:        main.thumbnail((2048, 2048), Image.ANTIALIAS)        main.save(final_image_path, 'JPEG', quality=85)
if __name__ == '__main__':    create_watermark('main_image.jpg', 'main_with_watermark.jpg', 'watermark.png', True)

The initial image is one I photographed a few years back.

The watermark I used is one I threw together in Photoshop. (It's a transparent png with white text)

The outcome image after running the python script is below.

Feel free to use this script whenever!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Great post! Thank you. ☆

  ·  8 years ago (edited)

Beautiful photograph and I had no idea python could do this. Looks like video watermarking might be just as easy according to Eric: http://leeeric.com/post/how-to-watermark-a-video-withpython/