4

I'm trying to figure out how to create this kind of watermark, especially the one that's in the center (it's not an ad, it's just a perfect example of what I want to accomplish):

enter image description here enter image description here

imatahi
  • 591
  • 1
  • 8
  • 16
  • 1
    You can do this with PIL; the answers to [this question](http://stackoverflow.com/q/5324647/4014959) show how to do it with a normal main image, and also how to do it properly if the main image contains transparency. – PM 2Ring Aug 16 '15 at 10:48

3 Answers3

5

Python's wand library has a Image.watermark method that can simplify common watermark operations.

from wand.image import Image

with Image(filename='background.jpg') as background:
  with Image(filename='watermark.png') as watermark:
    background.watermark(image=watermark, transparency=0.75)
  background.save(filename='result.jpg')
emcconville
  • 23,800
  • 4
  • 50
  • 66
  • +1 awesome code for watermarking. Is there anyway I could extract original and watermark image from the watermarked pic obtained from above code? – akhi1 Apr 02 '17 at 18:16
3

I don't have python installed where I am, but it should be something like this.

import Image

photo = Image.open("photo.jpg")
watermark = Image.open("watermark.png")

photo.paste(watermark, (0, 0), watermark)
photo.save("photo_with_watermark.jpg")

Image.paste doc

MyGGaN
  • 1,766
  • 3
  • 30
  • 41
2

You can do this with pyvips like this:

#!/usr/bin/python3

import sys
import pyvips

image = pyvips.Image.new_from_file(sys.argv[1], access="sequential")

text = pyvips.Image.text(sys.argv[3], dpi=700, rgba=True)

# scale the alpha down to make the text semi-transparent
text = (text * [1, 1, 1, 0.3]).cast("uchar")

# composite in the centre
image = image.composite(text, "over",
    x=int((image.width - text.width) / 2),
    y=int((image.height - text.height) / 2))

image.write_to_file(sys.argv[2])

Then run (for example):

$ ./watermark.py PNG_transparency_demonstration.png x.png "Hello world!"

To make:

enter image description here

jcupitt
  • 10,213
  • 2
  • 23
  • 39