habulaj commited on
Commit
4539dc7
·
verified ·
1 Parent(s): 29db2e8

Update routers/memoriam.py

Browse files
Files changed (1) hide show
  1. routers/memoriam.py +15 -26
routers/memoriam.py CHANGED
@@ -4,7 +4,6 @@ from PIL import Image, ImageDraw, ImageEnhance, ImageFont
4
  from io import BytesIO
5
  import requests
6
  from typing import Optional
7
- import os
8
 
9
  router = APIRouter()
10
 
@@ -58,7 +57,7 @@ def draw_single_line_text_centered(draw: ImageDraw.Draw, text: str, max_width: i
58
 
59
  text_width = draw.textlength(text, font=font)
60
  if text_width <= max_width:
61
- spacing = -0.03 * font_size
62
  draw.text(
63
  (center_x - text_width / 2, y),
64
  text,
@@ -69,8 +68,8 @@ def draw_single_line_text_centered(draw: ImageDraw.Draw, text: str, max_width: i
69
  break
70
 
71
  def create_gradient_bar(width: int, height: int) -> Image.Image:
72
- bar = Image.new("RGBA", (width, height))
73
- draw = ImageDraw.Draw(bar)
74
 
75
  for x in range(width):
76
  ratio = x / (width - 1)
@@ -85,17 +84,11 @@ def create_gradient_bar(width: int, height: int) -> Image.Image:
85
  b = int(0xFF * (1 - ratio2) + 0xE3 * ratio2)
86
  draw.line([(x, 0), (x, height)], fill=(r, g, b, 255))
87
 
88
- # Arredondar cantos
89
- mask = Image.new("L", (width, height), 0)
90
- mask_draw = ImageDraw.Draw(mask)
91
- mask_draw.rounded_rectangle([0, 0, width, height], radius=100, fill=255)
92
- bar.putalpha(mask)
93
-
94
- return bar
95
 
96
  def create_canvas(image_url: Optional[str], name: Optional[str]) -> BytesIO:
97
  width, height = 1080, 1350
98
- canvas = Image.new("RGBA", (width, height), (0, 0, 0, 0))
99
 
100
  if image_url:
101
  img = download_image_from_url(image_url)
@@ -116,21 +109,17 @@ def create_canvas(image_url: Optional[str], name: Optional[str]) -> BytesIO:
116
 
117
  draw = ImageDraw.Draw(canvas)
118
 
119
- # Texto (name)
120
  if name:
121
- font_path = "fonts/Montserrat-Bold.ttf"
122
  name_upper = name.upper()
123
- draw_single_line_text_centered(
124
- draw,
125
- text=name_upper,
126
- max_width=947,
127
- center_x=width // 2,
128
- y=1100,
129
- font_path=font_path
130
- )
131
-
132
- # Retângulo degradê com cantos arredondados
133
- bar = create_gradient_bar(110, int(6.82))
134
  canvas.paste(bar, (480, int(1213)), bar)
135
 
136
  buffer = BytesIO()
@@ -141,7 +130,7 @@ def create_canvas(image_url: Optional[str], name: Optional[str]) -> BytesIO:
141
  @router.get("/memoriam")
142
  def get_memoriam_image(
143
  image_url: Optional[str] = Query(None, description="URL da imagem de fundo"),
144
- name: Optional[str] = Query(None, description="Nome a ser exibido (em maiúsculas)")
145
  ):
146
  try:
147
  buffer = create_canvas(image_url, name)
 
4
  from io import BytesIO
5
  import requests
6
  from typing import Optional
 
7
 
8
  router = APIRouter()
9
 
 
57
 
58
  text_width = draw.textlength(text, font=font)
59
  if text_width <= max_width:
60
+ spacing = -0.03 * font_size # -3% tracking
61
  draw.text(
62
  (center_x - text_width / 2, y),
63
  text,
 
68
  break
69
 
70
  def create_gradient_bar(width: int, height: int) -> Image.Image:
71
+ gradient = Image.new("RGBA", (width, height))
72
+ draw = ImageDraw.Draw(gradient)
73
 
74
  for x in range(width):
75
  ratio = x / (width - 1)
 
84
  b = int(0xFF * (1 - ratio2) + 0xE3 * ratio2)
85
  draw.line([(x, 0), (x, height)], fill=(r, g, b, 255))
86
 
87
+ return gradient
 
 
 
 
 
 
88
 
89
  def create_canvas(image_url: Optional[str], name: Optional[str]) -> BytesIO:
90
  width, height = 1080, 1350
91
+ canvas = Image.new("RGBA", (width, height), (0, 0, 0, 0)) # Fundo transparente
92
 
93
  if image_url:
94
  img = download_image_from_url(image_url)
 
109
 
110
  draw = ImageDraw.Draw(canvas)
111
 
112
+ # Título
113
  if name:
 
114
  name_upper = name.upper()
115
+ font_path = "fonts/Montserrat-Bold.ttf"
116
+ max_width = 947
117
+ center_x = width // 2
118
+ y = 1100
119
+ draw_single_line_text_centered(draw, name_upper, max_width, center_x, y, font_path)
120
+
121
+ # Barra gradiente inferior
122
+ bar = create_gradient_bar(width=110, height=int(6.82))
 
 
 
123
  canvas.paste(bar, (480, int(1213)), bar)
124
 
125
  buffer = BytesIO()
 
130
  @router.get("/memoriam")
131
  def get_memoriam_image(
132
  image_url: Optional[str] = Query(None, description="URL da imagem de fundo"),
133
+ name: Optional[str] = Query(None, description="Nome (será exibido em maiúsculas)")
134
  ):
135
  try:
136
  buffer = create_canvas(image_url, name)