imaginator/creator.py
2024-11-02 14:11:20 +03:00

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