Update routers/memoriam.py
Browse files- 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,
|
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],
|
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
|
|
|
144 |
|
145 |
-
if
|
146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
|
148 |
-
if
|
149 |
-
|
|
|
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 |
-
|
161 |
-
|
162 |
):
|
163 |
try:
|
164 |
-
buffer = create_canvas(image_url, name,
|
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)}")
|