new poster
This commit is contained in:
parent
5821a4d5eb
commit
76d11edb68
1 changed files with 27 additions and 30 deletions
57
scripts/poster.py
Executable file → Normal file
57
scripts/poster.py
Executable file → Normal file
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue