From 76d11edb68c9e199663cb597e6e2aec7c7361d9b Mon Sep 17 00:00:00 2001 From: Jan Gerber Date: Sun, 20 Sep 2015 18:27:24 +0100 Subject: [PATCH] new poster --- scripts/poster.py | 57 ++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 30 deletions(-) mode change 100755 => 100644 scripts/poster.py diff --git a/scripts/poster.py b/scripts/poster.py old mode 100755 new mode 100644 index d88a26a..70fdc93 --- a/scripts/poster.py +++ b/scripts/poster.py @@ -52,7 +52,6 @@ def render_poster(data, poster): year = str(data.get('year', '')) collection = data.get('collection', '') duration = data.get('duration') - oxdb_id = data['oxdbId'] id = data['id'] frame = data.get('frame') timeline = data.get('timeline') @@ -60,7 +59,7 @@ def render_poster(data, poster): poster_size = (640, 1024) frame_size = (640, 480) frame_ratio = frame_size[0] / frame_size[1] - logo_size = (64, 32) + logo_size = (32, 32) small_frames = 8 small_frame_size = (80, 64) small_frame_ratio = small_frame_size[0] / small_frame_size[1] @@ -69,10 +68,15 @@ def render_poster(data, poster): font_size_small = 32 font_size_large = 48 font_file = os.path.join(static_root, 'MontserratBold.ttf') - hue = int(oxdb_id[2:10], 16) / pow(2, 32) * 360 - image_color = getRGB([hue, 1, 0.2]) - background_color = getRGB([hue, 1, 0.4]) - foreground_color = getRGB([hue, 1, 0.8]) + if collection: + hue = get_hue(collection, title) + saturation = 1 + else: + hue = 0 + saturation = 0 + image_color = getRGB([hue, saturation, 0.2]) + background_color = getRGB([hue, saturation, 0.4]) + foreground_color = getRGB([hue, saturation, 0.8]) poster_image = Image.new('RGB', poster_size) draw = ImageDraw.Draw(poster_image) @@ -93,16 +97,9 @@ def render_poster(data, poster): draw.rectangle(((0, 0), frame_size), fill=image_color) # logo - logo_image = Image.open(os.path.join(static_root, 'logo.maydayrooms.png')) + logo_image = Image.open(os.path.join('/srv/pandora/static/png/', 'logo.png')) logo_image = logo_image.resize(logo_size, Image.ANTIALIAS) - for y in range(logo_size[1]): - for x in range(logo_size[0]): - poster_color = poster_image.getpixel((margin + x, margin + y)) - logo_lightness = logo_image.getpixel((x, y))[0] / 255 - logo_alpha = logo_image.getpixel((x, y))[3] / 255 - logo_color = getRGB([hue, 1, logo_lightness]) - color = tuple([int(logo_color[i] * logo_alpha + poster_color[i] * (1 - logo_alpha)) for i in range(3)]) - poster_image.putpixel((margin + x, margin + y), color) + poster_image.paste(logo_image, (margin, margin), mask=logo_image.split()[3]) # small frames if duration: @@ -179,30 +176,30 @@ def render_poster(data, poster): ) offset_top += font_size_small + # id + drawText( + poster_image, + (margin, poster_size[1] - timeline_size[1] - margin - font_size_large), + id, + font_file, + font_size_large, + foreground_color + ) + # year if year: drawText( poster_image, - (margin, poster_size[1] - timeline_size[1] - margin - font_size_large), + ( + poster_size[0] - margin - getTextSize(poster_image, year, font_file, font_size_small)[0], + poster_size[1] - timeline_size[1] - margin - font_size_small + ), year, font_file, - font_size_large, + font_size_small, foreground_color ) - # id - drawText( - poster_image, - ( - poster_size[0] - margin - getTextSize(poster_image, id, font_file, font_size_small)[0], - poster_size[1] - timeline_size[1] - margin - font_size_small - ), - id, - font_file, - font_size_small, - foreground_color - ) - # timeline if timeline: timeline_image = Image.open(timeline)