44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from PIL import Image, ImageDraw, ImageFilter
|
|
|
|
from utils.gradient import generate_gradient
|
|
|
|
|
|
def create_post_image(file, language):
|
|
grad_image = generate_gradient(language)
|
|
|
|
with Image.open(file) as window_image:
|
|
window_image.load()
|
|
|
|
new_size = (int(window_image.size[0] * 1.1), int(window_image.size[1] * 1.1))
|
|
resized_image = grad_image.resize(new_size)
|
|
print(resized_image.size)
|
|
print(window_image.size)
|
|
print(
|
|
int((resized_image.size[0] - window_image.size[0]) / 2),
|
|
int((resized_image.size[1] - window_image.size[1]) / 2),
|
|
)
|
|
# resized_image.paste(window_image, (100, 50))
|
|
|
|
# Get dimensions of each image
|
|
width1, height1 = resized_image.size
|
|
width2, height2 = window_image.size
|
|
|
|
# Find center pixel of outer image
|
|
center_x, center_y = (width1 / 2), (height1 / 2)
|
|
|
|
# Offset inner image to align its center
|
|
im2_x = int(center_x - (width2 / 2))
|
|
im2_y = int(center_y - (height2 / 2))
|
|
|
|
# Make mask
|
|
mask = Image.new("L", window_image.size, 0)
|
|
draw = ImageDraw.Draw(mask)
|
|
draw.rectangle([5, 5, window_image.width - 5, window_image.height - 5], fill=255)
|
|
mask_blur = mask.filter(ImageFilter.GaussianBlur(2))
|
|
im = Image.composite(window_image, resized_image, mask_blur)
|
|
|
|
# Paste inner image over outer image
|
|
back_im = resized_image.copy()
|
|
back_im.paste(window_image, (im2_x, im2_y), mask=mask_blur)
|
|
|
|
return back_im
|