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', ''))
|
year = str(data.get('year', ''))
|
||||||
collection = data.get('collection', '')
|
collection = data.get('collection', '')
|
||||||
duration = data.get('duration')
|
duration = data.get('duration')
|
||||||
oxdb_id = data['oxdbId']
|
|
||||||
id = data['id']
|
id = data['id']
|
||||||
frame = data.get('frame')
|
frame = data.get('frame')
|
||||||
timeline = data.get('timeline')
|
timeline = data.get('timeline')
|
||||||
|
@ -60,7 +59,7 @@ def render_poster(data, poster):
|
||||||
poster_size = (640, 1024)
|
poster_size = (640, 1024)
|
||||||
frame_size = (640, 480)
|
frame_size = (640, 480)
|
||||||
frame_ratio = frame_size[0] / frame_size[1]
|
frame_ratio = frame_size[0] / frame_size[1]
|
||||||
logo_size = (64, 32)
|
logo_size = (32, 32)
|
||||||
small_frames = 8
|
small_frames = 8
|
||||||
small_frame_size = (80, 64)
|
small_frame_size = (80, 64)
|
||||||
small_frame_ratio = small_frame_size[0] / small_frame_size[1]
|
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_small = 32
|
||||||
font_size_large = 48
|
font_size_large = 48
|
||||||
font_file = os.path.join(static_root, 'MontserratBold.ttf')
|
font_file = os.path.join(static_root, 'MontserratBold.ttf')
|
||||||
hue = int(oxdb_id[2:10], 16) / pow(2, 32) * 360
|
if collection:
|
||||||
image_color = getRGB([hue, 1, 0.2])
|
hue = get_hue(collection, title)
|
||||||
background_color = getRGB([hue, 1, 0.4])
|
saturation = 1
|
||||||
foreground_color = getRGB([hue, 1, 0.8])
|
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)
|
poster_image = Image.new('RGB', poster_size)
|
||||||
draw = ImageDraw.Draw(poster_image)
|
draw = ImageDraw.Draw(poster_image)
|
||||||
|
|
||||||
|
@ -93,16 +97,9 @@ def render_poster(data, poster):
|
||||||
draw.rectangle(((0, 0), frame_size), fill=image_color)
|
draw.rectangle(((0, 0), frame_size), fill=image_color)
|
||||||
|
|
||||||
# logo
|
# 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)
|
logo_image = logo_image.resize(logo_size, Image.ANTIALIAS)
|
||||||
for y in range(logo_size[1]):
|
poster_image.paste(logo_image, (margin, margin), mask=logo_image.split()[3])
|
||||||
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)
|
|
||||||
|
|
||||||
# small frames
|
# small frames
|
||||||
if duration:
|
if duration:
|
||||||
|
@ -179,30 +176,30 @@ def render_poster(data, poster):
|
||||||
)
|
)
|
||||||
offset_top += font_size_small
|
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
|
# year
|
||||||
if year:
|
if year:
|
||||||
drawText(
|
drawText(
|
||||||
poster_image,
|
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,
|
year,
|
||||||
font_file,
|
font_file,
|
||||||
font_size_large,
|
font_size_small,
|
||||||
foreground_color
|
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
|
# timeline
|
||||||
if timeline:
|
if timeline:
|
||||||
timeline_image = Image.open(timeline)
|
timeline_image = Image.open(timeline)
|
||||||
|
|
Loading…
Reference in a new issue