Create a gist now

Instantly share code, notes, and snippets.

How to apply a semi-transparent watermark to an image using Python
from PIL import Image, ImageDraw
def main():
# Open the original image
main ="12voltm.jpg")
# Create a new image for the watermark with an alpha layer (RGBA)
# the same size as the original image
watermark ="RGBA", main.size)
# Get an ImageDraw object so we can draw on the image
waterdraw = ImageDraw.ImageDraw(watermark, "RGBA")
# Place the text at (10, 10) in the upper left corner. Text will be white.
waterdraw.text((10, 10), "The Image Project")
# Get the watermark image as grayscale and fade the image
# See <>
# for information on the point() function
# Note that the second parameter we give to the min function determines
# how faded the image will be. That number is in the range [0, 256],
# where 0 is black and 256 is white. A good value for fading our white
# text is in the range [100, 200].
watermask = watermark.convert("L").point(lambda x: min(x, 100))
# Apply this mask to the watermark image, using the alpha filter to
# make it transparent
# Paste the watermark (with alpha layer) onto the original image and save it
main.paste(watermark, None, watermark)"12volt-watermarked.jpg", "JPEG")
if __name__ == '__main__':

How to set watermark in position of 10 pixel from bottom?


Doesn't work for me.


i want to use it not only for a single image ... a bunch of image fetching from database ,how can i use it?I am using django.


Works like a charm. To be able to use this from the command line I suggest to add #!/usr/bin/env python.


My recipe for those who want a watermark to be a vector image or want to use a blend mode as well as semi-transparency.


Thank you! This works like a charm.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment