habulaj commited on
Commit
29c907a
·
verified ·
1 Parent(s): f031ee2

Update routers/memoriam.py

Browse files
Files changed (1) hide show
  1. routers/memoriam.py +21 -10
routers/memoriam.py CHANGED
@@ -91,15 +91,17 @@ def create_gradient_bar(width: int, height: int, radius: int = 50) -> Image.Imag
91
  gradient.putalpha(mask)
92
  return gradient
93
 
94
- def draw_year_text(draw: ImageDraw.Draw, text: str, x: int, y: int, font_path: str):
95
  try:
96
  font = ImageFont.truetype(font_path, 24)
97
  except Exception:
98
  font = ImageFont.load_default()
 
 
99
  spacing = 0.01 * 24 # 1%
100
  draw.text((x, y), text, font=font, fill=(255, 255, 255), spacing=spacing)
101
 
102
- def create_canvas(image_url: Optional[str], name: Optional[str], birth_year: Optional[str], death_year: Optional[str]) -> BytesIO:
103
  width, height = 1080, 1350
104
  canvas = Image.new("RGBA", (width, height), (0, 0, 0, 0)) # Fundo transparente
105
 
@@ -140,13 +142,22 @@ def create_canvas(image_url: Optional[str], name: Optional[str], birth_year: Opt
140
  canvas.paste(bar, (bar_x, bar_y), bar)
141
 
142
  # Textos laterais (anos)
143
- text_y = bar_y + (bar_height - 28) // 2 # centralizado verticalmente com base na altura da linha
 
144
 
145
- if birth_year:
146
- draw_year_text(draw, birth_year, bar_x - 12 - draw.textlength(birth_year, font=ImageFont.truetype("fonts/Montserrat-SemiBold.ttf", 24)), text_y, "fonts/Montserrat-SemiBold.ttf")
 
 
 
 
 
 
 
147
 
148
- if death_year:
149
- draw_year_text(draw, death_year, bar_x + bar_width + 12, text_y, "fonts/Montserrat-SemiBold.ttf")
 
150
 
151
  buffer = BytesIO()
152
  canvas.save(buffer, format="PNG")
@@ -157,11 +168,11 @@ def create_canvas(image_url: Optional[str], name: Optional[str], birth_year: Opt
157
  def get_memoriam_image(
158
  image_url: Optional[str] = Query(None, description="URL da imagem de fundo"),
159
  name: Optional[str] = Query(None, description="Nome (será exibido em maiúsculas)"),
160
- birth_year: Optional[str] = Query(None, description="Ano de nascimento (ex: 1943)"),
161
- death_year: Optional[str] = Query(None, description="Ano de falecimento (ex: 2023)")
162
  ):
163
  try:
164
- buffer = create_canvas(image_url, name, birth_year, death_year)
165
  return StreamingResponse(buffer, media_type="image/png")
166
  except Exception as e:
167
  raise HTTPException(status_code=500, detail=f"Erro ao gerar imagem: {str(e)}")
 
91
  gradient.putalpha(mask)
92
  return gradient
93
 
94
+ def draw_year_text(draw: ImageDraw.Draw, prefix: str, year: str, x: int, y: int, font_path: str):
95
  try:
96
  font = ImageFont.truetype(font_path, 24)
97
  except Exception:
98
  font = ImageFont.load_default()
99
+
100
+ text = f"{prefix} {year}"
101
  spacing = 0.01 * 24 # 1%
102
  draw.text((x, y), text, font=font, fill=(255, 255, 255), spacing=spacing)
103
 
104
+ def create_canvas(image_url: Optional[str], name: Optional[str], birth: Optional[str], death: Optional[str]) -> BytesIO:
105
  width, height = 1080, 1350
106
  canvas = Image.new("RGBA", (width, height), (0, 0, 0, 0)) # Fundo transparente
107
 
 
142
  canvas.paste(bar, (bar_x, bar_y), bar)
143
 
144
  # Textos laterais (anos)
145
+ text_y = bar_y + (bar_height - 28) // 2
146
+ font_path_semibold = "fonts/Montserrat-SemiBold.ttf"
147
 
148
+ if birth:
149
+ prefix = ""
150
+ birth_text = f"{prefix} {birth}"
151
+ try:
152
+ font = ImageFont.truetype(font_path_semibold, 24)
153
+ except Exception:
154
+ font = ImageFont.load_default()
155
+ text_width = draw.textlength(birth_text, font=font)
156
+ draw_year_text(draw, prefix, birth, bar_x - 12 - text_width, text_y, font_path_semibold)
157
 
158
+ if death:
159
+ prefix = ""
160
+ draw_year_text(draw, prefix, death, bar_x + bar_width + 12, text_y, font_path_semibold)
161
 
162
  buffer = BytesIO()
163
  canvas.save(buffer, format="PNG")
 
168
  def get_memoriam_image(
169
  image_url: Optional[str] = Query(None, description="URL da imagem de fundo"),
170
  name: Optional[str] = Query(None, description="Nome (será exibido em maiúsculas)"),
171
+ birth: Optional[str] = Query(None, description="Ano de nascimento"),
172
+ death: Optional[str] = Query(None, description="Ano de falecimento")
173
  ):
174
  try:
175
+ buffer = create_canvas(image_url, name, birth, death)
176
  return StreamingResponse(buffer, media_type="image/png")
177
  except Exception as e:
178
  raise HTTPException(status_code=500, detail=f"Erro ao gerar imagem: {str(e)}")