Reputation: 101
avatar.jpg
back.jpg
How to synthesize two images as follows?
I Effect:
Upvotes: 9
Views: 5825
Reputation: 18018
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')
Crop part of this code is borrowed form this answer.
Hope it helps!
Upvotes: 21