import requests import io from io import BytesIO from PIL import ImageDraw, ImageFont from PIL import Image, ImageDraw, ImageFont import matplotlib.pyplot as plt import numpy as np from .MyDraw import MyDraw class BusPoster(MyDraw): def start_draw(self): return super().start_draw() def set_colors(self): width_border = self.prms['width_border'] proportion = self.prms['proportion'] fill_color_l = self.prms['letter_background_color'] fill_color_n = self.prms['number_background_color'] self.draw.rounded_rectangle( (0, 0, self.width-width_border, self.height-width_border), fill=fill_color_l, outline=self.theme_params['poster_line_color'], width=width_border, radius=5) self.draw.rounded_rectangle( (0, 0, proportion*self.width-width_border, self.height-width_border), fill=fill_color_n, outline=self.theme_params['poster_line_color'], width=width_border, radius=5) pass def set_bus_number(self, bus_number="11"): text_color = 'black' width_border = self.prms['width_border'] text_bbox = self.font.getbbox(str(bus_number)) font_width, font_height = text_bbox[2] - text_bbox[0], text_bbox[3] - text_bbox[1] offset_width = np.round((self.prms['proportion']*self.width-width_border)/2) - np.round(font_width/2) text_position = (offset_width,0) self.draw.text( text_position, bus_number, fill=text_color, font=self.font, # align ="center" ) pass def set_bus_letter(self, bus_letter="E"): proportion = self.prms['proportion'] width_border = self.prms['width_border'] text_color = 'white' text_bbox = self.font.getbbox(str(bus_letter)) font_width, font_height = text_bbox[2] - text_bbox[0], text_bbox[3] - text_bbox[1] offset_width = np.round((proportion*self.width-width_border)) + 0.75*np.round(font_width/2) text_position = (1.1*offset_width,0) self.draw.text( text_position, bus_letter, fill=text_color, font=self.font, # align ="center" ) pass