@@ -152,16 +152,15 @@ def draw_time(txt_draw: ImageDraw.ImageDraw, points: Box, text="04:20"):
152
152
153
153
154
154
def draw_avatar (
155
- img : Image , draw : ImageDraw .ImageDraw , username : str , points_balloon : Box , avatar_path : str , user_id : int
155
+ img : Image , draw : ImageDraw .ImageDraw , username : str , points_balloon : Box , avatar_path : str , background_color : str
156
156
):
157
157
y0 = points_balloon .bottom_right .y - AVATAR_SIZE
158
158
y1 = points_balloon .bottom_right .y
159
159
points = Box (MARGIN , y0 , MARGIN + AVATAR_SIZE , y1 )
160
160
box_position = tuple (a - 2 for a in points .top_left .to_tuple ())
161
161
size = AVATAR_SIZE + 4
162
162
if avatar_path == '' :
163
- avatar_color = FOREGROUND_COLORS [user_id % len (FOREGROUND_COLORS )]
164
- draw .ellipse (points .to_list (), fill = avatar_color )
163
+ draw .ellipse (points .to_list (), fill = background_color )
165
164
avatar_center = points .center ().to_tuple ()
166
165
draw .text (
167
166
avatar_center , username [0 ], anchor = 'mm' , font = FONTS ['avatar' ], fill = '#FFFFFF' ,
@@ -184,7 +183,7 @@ def draw_avatar(
184
183
img .paste (tmp , mask = avatar_mask )
185
184
186
185
187
- def sticker_from_text (user_id : int , username : str , text : str , avatar_path : str , msg_time : str ):
186
+ def sticker_from_text (user_id : int , username : str , text : str , avatar_path : str , msg_time : str , other_user_id : int ):
188
187
'''
189
188
Creates an image from a text message, emulating Telegram's message layout/design.
190
189
'''
@@ -227,12 +226,12 @@ def sticker_from_text(user_id: int, username: str, text: str, avatar_path: str,
227
226
228
227
img = Image .new ("RGBA" , size , transparent )
229
228
dr = ImageDraw .Draw (img )
230
- draw_avatar (img , dr , username , points_balloon = points_balloon , avatar_path = avatar_path , user_id = user_id )
229
+ user_color = get_user_color (other_user_id )
230
+ draw_avatar (img , dr , username , points_balloon = points_balloon , avatar_path = avatar_path , background_color = user_color )
231
231
232
232
draw_balloon (dr , points = points_balloon , fill = BOX_COLOR )
233
233
234
- username_color = FOREGROUND_COLORS [user_id % len (FOREGROUND_COLORS )]
235
- draw_username (dr , position = points_balloon .top_left , username = username , fill = username_color )
234
+ draw_username (dr , position = points_balloon .top_left , username = username , fill = user_color )
236
235
draw_message (dr , points = points_balloon , text = final_text , user_size = title_size )
237
236
draw_time (dr , text = msg_time , points = points_balloon )
238
237
@@ -297,3 +296,7 @@ def generate_avatar_mask(img_size: tuple, points: Box):
297
296
maskdraw .ellipse (points .to_list (), fill = '#FFFFFF' )
298
297
del maskdraw
299
298
return img
299
+
300
+
301
+ def get_user_color (user_id : int ) -> str :
302
+ return FOREGROUND_COLORS [user_id % len (FOREGROUND_COLORS )]
0 commit comments