bgamazay commited on
Commit
da5a01c
·
verified ·
1 Parent(s): f76ab84

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -19
app.py CHANGED
@@ -87,30 +87,32 @@ def create_label(background_image, model_data):
87
  """
88
  Create the label image by adding text from model_data to the background image.
89
  """
90
- label_img = background_image.convert("RGBA")
91
- draw = ImageDraw.Draw(label_img)
92
 
93
- # Load fonts
 
 
 
 
94
  try:
95
- # Use Inter_24pt-Bold.ttf for the title
96
- title_font = ImageFont.truetype("Inter_24pt-Bold.ttf", size=22) # Bold for title
97
- # Use Inter-Regular.ttf for details and energy
98
- details_font = ImageFont.truetype("Inter_18pt-Regular.ttf", size=18) # Regular for details
99
- energy_font = ImageFont.truetype("Inter_18pt-Medium.ttf", size=20) # Medium for energy
100
  except Exception as e:
101
  st.error(f"Font loading failed: {e}")
102
- return label_img
103
 
104
- # Define positions for each text group
105
- title_x, title_y = 28, 128
106
- details_x, details_y = 375, 210
107
- energy_x, energy_y = 350, 390
108
 
109
  # Group 1: Title (Bold)
110
  draw.text((title_x, title_y), str(model_data['model']), font=title_font, fill="black")
111
- draw.text((title_x, title_y + 30), str(model_data['provider']), font=title_font, fill="black")
112
 
113
- # Group 2: Details (Right-Justified, no prefixes)
114
  details_lines = [
115
  str(model_data['date']),
116
  str(model_data['task']),
@@ -119,15 +121,17 @@ def create_label(background_image, model_data):
119
  for i, line in enumerate(details_lines):
120
  bbox = draw.textbbox((0, 0), line, font=details_font)
121
  text_width = bbox[2] - bbox[0]
122
- draw.text((details_x - text_width, details_y + i * 40), line, font=details_font, fill="black")
123
 
124
- # Group 3: Energy (Bottom-Center, no prefixes)
125
- energy_text = str(model_data['energy']) # Ensure this is a string
126
  bbox = draw.textbbox((0, 0), energy_text, font=energy_font)
127
  energy_text_width = bbox[2] - bbox[0]
128
  draw.text((energy_x - energy_text_width // 2, energy_y), energy_text, font=energy_font, fill="black")
129
 
130
- return label_img
 
 
131
 
132
  if __name__ == "__main__":
133
  main()
 
87
  """
88
  Create the label image by adding text from model_data to the background image.
89
  """
90
+ scale_factor = 2 # Render at 2x resolution for better text clarity
91
+ high_res_size = (800 * scale_factor, 600 * scale_factor)
92
 
93
+ # Resize background to high resolution
94
+ high_res_image = background_image.resize(high_res_size, Image.Resampling.LANCZOS)
95
+ draw = ImageDraw.Draw(high_res_image)
96
+
97
+ # Load fonts with scaled sizes
98
  try:
99
+ title_font = ImageFont.truetype("Inter_24pt-Bold.ttf", size=22 * scale_factor)
100
+ details_font = ImageFont.truetype("Inter_18pt-Regular.ttf", size=18 * scale_factor)
101
+ energy_font = ImageFont.truetype("Inter_18pt-Medium.ttf", size=20 * scale_factor)
 
 
102
  except Exception as e:
103
  st.error(f"Font loading failed: {e}")
104
+ return high_res_image
105
 
106
+ # Define scaled positions for text
107
+ title_x, title_y = 28 * scale_factor, 128 * scale_factor
108
+ details_x, details_y = 375 * scale_factor, 210 * scale_factor
109
+ energy_x, energy_y = 350 * scale_factor, 390 * scale_factor
110
 
111
  # Group 1: Title (Bold)
112
  draw.text((title_x, title_y), str(model_data['model']), font=title_font, fill="black")
113
+ draw.text((title_x, title_y + 30 * scale_factor), str(model_data['provider']), font=title_font, fill="black")
114
 
115
+ # Group 2: Details (Right-Justified)
116
  details_lines = [
117
  str(model_data['date']),
118
  str(model_data['task']),
 
121
  for i, line in enumerate(details_lines):
122
  bbox = draw.textbbox((0, 0), line, font=details_font)
123
  text_width = bbox[2] - bbox[0]
124
+ draw.text((details_x - text_width, details_y + i * 40 * scale_factor), line, font=details_font, fill="black")
125
 
126
+ # Group 3: Energy (Bottom-Center)
127
+ energy_text = str(model_data['energy'])
128
  bbox = draw.textbbox((0, 0), energy_text, font=energy_font)
129
  energy_text_width = bbox[2] - bbox[0]
130
  draw.text((energy_x - energy_text_width // 2, energy_y), energy_text, font=energy_font, fill="black")
131
 
132
+ # Downscale to the target resolution
133
+ final_image = high_res_image.resize((800, 600), Image.Resampling.LANCZOS)
134
+ return final_image
135
 
136
  if __name__ == "__main__":
137
  main()