Skip to content

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
How to apply a semi-transparent watermark to an image using Python
from PIL import Image, ImageDraw
def main():
# Open the original image
main = Image.open("12voltm.jpg")
# Create a new image for the watermark with an alpha layer (RGBA)
# the same size as the original image
watermark = Image.new("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 <http://www.pythonware.com/library/pil/handbook/image.htm#Image.point>
# 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
watermark.putalpha(watermask)
# Paste the watermark (with alpha layer) onto the original image and save it
main.paste(watermark, None, watermark)
main.save("12volt-watermarked.jpg", "JPEG")
if __name__ == '__main__':
main()
@ehsansh84

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

@santiagobasulto

Doesn't work for me.

@Raihanveer

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.

@philippeowagner

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

@EugeneDae

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.