|
- from PIL import Image, ImageDraw, ImageFont
-
- def sub(p1, p2):
- return (p1[0] - p2[0], p1[1] - p2[1])
-
- def overlay(image_in, image_out):
- image = image_in.convert("RGBA")
-
- size = image.size
- center = (size[0]/2, size[1]/2)
- message = "YOU DIED"
- font_size = size[1] // 6
- gradient_range = size[1] // 10
-
- rect_top = sub(center, (0, font_size * 3 // 4))
- rect_bot = sub(center, (0, -font_size * 3 // 4))
-
- overlay = Image.new("RGBA", size, (0,0,0,0))
-
- draw = ImageDraw.Draw(overlay)
- font = ImageFont.truetype("OptimusPrinceps.ttf", font_size)
-
- draw.rectangle([0, rect_top[1], size[0], rect_bot[1]], fill=(0,0,0))
-
- for y in range(-1, -gradient_range - 1, -1):
- c = 255 - 255 * (-y) // gradient_range
- draw.line([0, rect_top[1] + y, size[0], rect_top[1] + y], fill=(0,0,0,c))
-
- for y in range(1, gradient_range + 1, 1):
- c = 255 - 255 * (y) // gradient_range
- draw.line([0, rect_bot[1] + y, size[0], rect_bot[1] + y], fill=(0,0,0,c))
-
- text_size = draw.textsize(message, font=font)
- offset = (center[0] - text_size[0]/2, center[1] - text_size[1]/2)
-
- draw.text(offset, message, (255,0,0), font=font)
-
- result = Image.alpha_composite(Image.alpha_composite(image, Image.new("RGBA", size, (0,0,0,100))), overlay)
- return result
|