def _generate_image(event):
image_data = event_image.get_image(event)
im = Image.open(StringIO.StringIO(image_data))
image_size = (im.width, im.height)
scale = tuple(1.0 * x / y for x, y in zip(full_size, image_size))
# Generate the background-image that is blurred and backgrounds the main image
max_scale = max(scale)
background_image_new_size = tuple(int(round(max_scale * x)) for x in image_size)
background_resized = im.resize(background_image_new_size, resample=Image.BICUBIC)
background_blurred = background_resized.filter(ImageFilter.GaussianBlur(100))
background_offset = tuple((x - y) / 2 for x, y in zip(full_size, background_image_new_size))
# Generate the scaled-image that fits the frame exactly
min_scale = min(scale)
foreground_image_size = tuple(int(round(min_scale * x)) for x in image_size)
foreground_resized = im.resize(foreground_image_size, resample=Image.BICUBIC)
foreground_offset = tuple((x - y) / 2 for x, y in zip(full_size, foreground_image_size))
target = Image.new('RGB', full_size)
target.paste(background_blurred, background_offset)
target.paste(foreground_resized, foreground_offset)
return target
评论列表
文章目录