9

avatar.jpg

back.jpg

How to synthesize two images as follows?

I Effect:

Shaunak
  • 17,377
  • 5
  • 53
  • 84
Think.ing
  • 101
  • 1
  • 5

1 Answers1

21

Here's an example using your images. Dimensions are hardcoded in the example, but you can easily replace them with calculations. avatar.jpg and background.jpg are images in your post saved as is.

Here's a link to github repo for this example : python_pillow_circular_thumbnail

from PIL import Image, ImageOps, ImageDraw

im = Image.open('avatar.jpg')
im = im.resize((120, 120));
bigsize = (im.size[0] * 3, im.size[1] * 3)
mask = Image.new('L', bigsize, 0)
draw = ImageDraw.Draw(mask) 
draw.ellipse((0, 0) + bigsize, fill=255)
mask = mask.resize(im.size, Image.ANTIALIAS)
im.putalpha(mask)

output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
output.putalpha(mask)
output.save('output.png')

background = Image.open('back.jpg')
background.paste(im, (150, 10), im)
background.save('overlap.png')

output.png: enter image description here

overlap.png: enter image description here

Crop part of this code is borrowed form this answer.

Hope it helps!

Community
  • 1
  • 1
Shaunak
  • 17,377
  • 5
  • 53
  • 84