1
0
Fork 0

explain code about generate bus poster

diego
diegoalrv 2023-10-23 21:20:18 -03:00
parent c4615f2067
commit 639ec478cc
1 changed files with 84 additions and 57 deletions

View File

@ -62,32 +62,50 @@ def obtain_min_max_time(remaining_time):
else: else:
return 10, remaining_time return 10, remaining_time
###################################################################
# Parametros para generar la imagen
# "direction": "R", Indicador de la dirección en la que va el bus
# "distance": 1948.575483806973. Distancia en m
# "licensePlate": "LJHA57", Patente del bus
# "route": "401", Linea de bus
# "timeLabel": "09:49", Hora de llegada al paradero
# theme: Tema de la pantalla "day/night"
# 'number_background_color': 'yellow', Color del fondo para el numero
# 'letter_background_color': 'green', Color del fondo para la letra
def main():
# Carga los datos
data = load_data() data = load_data()
# Calcula distancia aproximada en km
distance = approx_km(data) distance = approx_km(data)
# Calcula el tiempo restante a la llegada
remaining_time = calc_remaining_time(data) remaining_time = calc_remaining_time(data)
# Obtiene valores máximos y mínimo de rangos para desplegar en pantalla
min_time, max_time = obtain_min_max_time(remaining_time) min_time, max_time = obtain_min_max_time(remaining_time)
# Selecciona el tema
theme = 'day' theme = 'day'
# panel_height, panel_width = 40, 80 # Alto y ancho de la imagen en pixeles
# n_panels = 3
# height, width = n_panels*panel_height, n_panels*panel_width
height, width = 120, 240 height, width = 120, 240
# Inicia el dibujo y setea el tema
full_panel = MyDraw(height=height, width=width) full_panel = MyDraw(height=height, width=width)
full_panel.set_theme(theme) full_panel.set_theme(theme)
full_panel.start_draw() full_panel.start_draw()
# full_panel.preview() # full_panel.preview()
# Con el dato de la patente se agrega al dibujo
bp = BusPlate() bp = BusPlate()
plate = data["licensePlate"] plate = data["licensePlate"]
bp.request_bus_plate(bus_plate=plate) bp.request_bus_plate(bus_plate=plate)
bp.generate_image() bp.generate_image()
bp.resize_image(target_height=aprox((3/10)*height)) bp.resize_image(target_height=aprox((3/10)*height))
# Agrega la distancia al paradero
dist_anmc = DistanceAnnouncement(aprox((2/5)*height), aprox((1/3)*width)) dist_anmc = DistanceAnnouncement(aprox((2/5)*height), aprox((1/3)*width))
dist_anmc.set_theme(theme) dist_anmc.set_theme(theme)
dist_anmc.start_draw() dist_anmc.start_draw()
@ -95,6 +113,7 @@ dist_anmc.start_draw()
dist_anmc.set_base_text() dist_anmc.set_base_text()
dist_anmc.set_distance_text(distance=distance) dist_anmc.set_distance_text(distance=distance)
# Agrega el anuncio de los minutos restante al arribo
time_anmc = TimeAnnouncement(aprox((2/5)*height), aprox((1/3)*width)) time_anmc = TimeAnnouncement(aprox((2/5)*height), aprox((1/3)*width))
time_anmc.set_theme(theme) time_anmc.set_theme(theme)
time_anmc.start_draw() time_anmc.start_draw()
@ -102,6 +121,7 @@ time_anmc.start_draw()
time_anmc.set_base_text() time_anmc.set_base_text()
time_anmc.set_min_max_text(min_time=min_time, max_time=max_time) time_anmc.set_min_max_text(min_time=min_time, max_time=max_time)
# Genera la imagen de la linea del bus
poster = BusPoster(aprox((1/4)*height), aprox((1/4)*width)) poster = BusPoster(aprox((1/4)*height), aprox((1/4)*width))
poster.set_theme(theme) poster.set_theme(theme)
poster.start_draw() poster.start_draw()
@ -114,18 +134,22 @@ poster_params = {
'letter_background_color': 'green', 'letter_background_color': 'green',
} }
# Se setean los parametros
poster.set_params(poster_params) poster.set_params(poster_params)
poster.load_barlow() poster.load_barlow()
poster.set_colors() poster.set_colors()
# Se setea la ruta y la direccion en la que va
poster.set_bus_number(bus_number=data["route"]) poster.set_bus_number(bus_number=data["route"])
poster.set_bus_letter(bus_letter=data["direction"]) poster.set_bus_letter(bus_letter=data["direction"])
# Se agrega la imagen del bus
bm = BusImage() bm = BusImage()
bm.set_theme(theme) bm.set_theme(theme)
bm.load_image_from_url() bm.load_image_from_url()
bm.crop_image(top_cut=165, bottom_cut=165) bm.crop_image(top_cut=165, bottom_cut=165)
bm.resize_image(target_width=aprox((1/3)*width)) bm.resize_image(target_width=aprox((1/3)*width))
# Se agregan todas las imagenes al canvas
full_panel.add_image(bp, (aprox(0.5*width), aprox((2/3)*height))) full_panel.add_image(bp, (aprox(0.5*width), aprox((2/3)*height)))
full_panel.add_image(dist_anmc, (aprox((3/8)*width), aprox(0.1*height))) full_panel.add_image(dist_anmc, (aprox((3/8)*width), aprox(0.1*height)))
full_panel.add_image(time_anmc, (aprox((2/3)*width), aprox(0.1*height))) full_panel.add_image(time_anmc, (aprox((2/3)*width), aprox(0.1*height)))
@ -134,3 +158,6 @@ full_panel.add_image(bm, (aprox(0.02*width),aprox((1/6)*height)))
full_panel.get_image() full_panel.get_image()
full_panel.save_image('/app/data/output.png') full_panel.save_image('/app/data/output.png')
if __name__ == '__main__':
main()