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

@ -61,76 +61,103 @@ def obtain_min_max_time(remaining_time):
return 7, 10 return 7, 10
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
data = load_data() # 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
distance = approx_km(data) def main():
# Carga los datos
data = load_data()
remaining_time = calc_remaining_time(data) # Calcula distancia aproximada en km
min_time, max_time = obtain_min_max_time(remaining_time) distance = approx_km(data)
theme = 'day' # Calcula el tiempo restante a la llegada
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)
# panel_height, panel_width = 40, 80 # Selecciona el tema
# n_panels = 3 theme = 'day'
# height, width = n_panels*panel_height, n_panels*panel_width
height, width = 120, 240 # Alto y ancho de la imagen en pixeles
height, width = 120, 240
full_panel = MyDraw(height=height, width=width) # Inicia el dibujo y setea el tema
full_panel.set_theme(theme) full_panel = MyDraw(height=height, width=width)
full_panel.start_draw() full_panel.set_theme(theme)
# full_panel.preview() full_panel.start_draw()
# full_panel.preview()
bp = BusPlate() # Con el dato de la patente se agrega al dibujo
plate = data["licensePlate"] bp = BusPlate()
bp.request_bus_plate(bus_plate=plate) plate = data["licensePlate"]
bp.generate_image() bp.request_bus_plate(bus_plate=plate)
bp.resize_image(target_height=aprox((3/10)*height)) bp.generate_image()
bp.resize_image(target_height=aprox((3/10)*height))
dist_anmc = DistanceAnnouncement(aprox((2/5)*height), aprox((1/3)*width)) # Agrega la distancia al paradero
dist_anmc.set_theme(theme) dist_anmc = DistanceAnnouncement(aprox((2/5)*height), aprox((1/3)*width))
dist_anmc.start_draw() dist_anmc.set_theme(theme)
# dist_anmc.set_background() dist_anmc.start_draw()
dist_anmc.set_base_text() # dist_anmc.set_background()
dist_anmc.set_distance_text(distance=distance) dist_anmc.set_base_text()
dist_anmc.set_distance_text(distance=distance)
time_anmc = TimeAnnouncement(aprox((2/5)*height), aprox((1/3)*width)) # Agrega el anuncio de los minutos restante al arribo
time_anmc.set_theme(theme) time_anmc = TimeAnnouncement(aprox((2/5)*height), aprox((1/3)*width))
time_anmc.start_draw() time_anmc.set_theme(theme)
# time_anmc.set_background() time_anmc.start_draw()
time_anmc.set_base_text() # time_anmc.set_background()
time_anmc.set_min_max_text(min_time=min_time, max_time=max_time) time_anmc.set_base_text()
time_anmc.set_min_max_text(min_time=min_time, max_time=max_time)
poster = BusPoster(aprox((1/4)*height), aprox((1/4)*width)) # Genera la imagen de la linea del bus
poster.set_theme(theme) poster = BusPoster(aprox((1/4)*height), aprox((1/4)*width))
poster.start_draw() poster.set_theme(theme)
poster.start_draw()
poster_params = { poster_params = {
'proportion': 0.6, 'proportion': 0.6,
'width_border': 1, 'width_border': 1,
'font_size': 25, 'font_size': 25,
'number_background_color': 'yellow', 'number_background_color': 'yellow',
'letter_background_color': 'green', 'letter_background_color': 'green',
} }
poster.set_params(poster_params) # Se setean los parametros
poster.load_barlow() poster.set_params(poster_params)
poster.set_colors() poster.load_barlow()
poster.set_bus_number(bus_number=data["route"]) poster.set_colors()
poster.set_bus_letter(bus_letter=data["direction"]) # Se setea la ruta y la direccion en la que va
poster.set_bus_number(bus_number=data["route"])
poster.set_bus_letter(bus_letter=data["direction"])
bm = BusImage() # Se agrega la imagen del bus
bm.set_theme(theme) bm = BusImage()
bm.load_image_from_url() bm.set_theme(theme)
bm.crop_image(top_cut=165, bottom_cut=165) bm.load_image_from_url()
bm.resize_image(target_width=aprox((1/3)*width)) bm.crop_image(top_cut=165, bottom_cut=165)
bm.resize_image(target_width=aprox((1/3)*width))
full_panel.add_image(bp, (aprox(0.5*width), aprox((2/3)*height))) # Se agregan todas las imagenes al canvas
full_panel.add_image(dist_anmc, (aprox((3/8)*width), aprox(0.1*height))) full_panel.add_image(bp, (aprox(0.5*width), aprox((2/3)*height)))
full_panel.add_image(time_anmc, (aprox((2/3)*width), aprox(0.1*height))) full_panel.add_image(dist_anmc, (aprox((3/8)*width), aprox(0.1*height)))
full_panel.add_image(poster, (aprox((1/6)*width), aprox((2/3)*height))) full_panel.add_image(time_anmc, (aprox((2/3)*width), aprox(0.1*height)))
full_panel.add_image(bm, (aprox(0.02*width),aprox((1/6)*height))) full_panel.add_image(poster, (aprox((1/6)*width), aprox((2/3)*height)))
full_panel.get_image() full_panel.add_image(bm, (aprox(0.02*width),aprox((1/6)*height)))
full_panel.save_image('/app/data/output.png') full_panel.get_image()
full_panel.save_image('/app/data/output.png')
if __name__ == '__main__':
main()