def lines(self): if hasattr(self, "_lines"): return self._lines line_config = [ (self.DEFAULT_TEXT_ABOVE, self.DEFAULT_TEXT_FONT, self.DEFAULT_TEXT_FONT_SIZE, self.DEFAULT_TEXT_PADDING) ] custom_text_font_size = self._get_custom_text_font_size() for line in self._split_custom_text_in_lines(): line_config.append((line, self.CUSTOM_TEXT_FONT, custom_text_font_size, self.CUSTOM_TEXT_PADDING)) line_config.append( (self.DEFAULT_TEXT_BELOW, self.DEFAULT_TEXT_FONT, self.DEFAULT_TEXT_FONT_SIZE, self.DEFAULT_TEXT_PADDING) ) lines = [] y_offset = self.STARTING_Y_OFFSET for text, font_name, font_size, padding in line_config: font_path = get_resource_path("fonts/" + font_name) font = ImageFont.truetype(font_path, font_size) tw, th = font.getsize(text) x, y = (self.image_width - tw) // 2, y_offset lines.append(self.Line(x=x, y=y, w=tw, h=th, font=font, text=text)) y_offset += th + padding self._lines = lines return self._lines
# -*- coding: utf-8 -*- from __future__ import division from collections import namedtuple from itertools import izip_longest from PIL import Image, ImageFont, ImageDraw from ga import settings from ga.utils import get_resource_path BORDER = Image.open(get_resource_path("images/border.png")) OVERLAY = Image.open(get_resource_path("images/overlay.png")) class Banner(object): Line = namedtuple("Line", ["x", "y", "w", "h", "font", "text"]) DEFAULT_TEXT_FONT = "Montserrat-Regular.otf" DEFAULT_TEXT_ABOVE = u"M A K E" DEFAULT_TEXT_BELOW = u"G R E A T A G A I N !" DEFAULT_TEXT_FONT_SIZE = 28 DEFAULT_TEXT_PADDING = 0 CUSTOM_TEXT_FONT = "OldStandard-Regular.ttf" CUSTOM_TEXT_PADDING = 10 STARTING_Y_OFFSET = 60