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