From a3fbdd4096b7707d0b06de29fdae58f06f077efe Mon Sep 17 00:00:00 2001 From: KimigaiiWuyi <444835641@qq.com> Date: Thu, 23 Nov 2023 04:39:20 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E5=AE=8C=E5=96=84`get=5Fevent?= =?UTF-8?q?=5Favatar()`=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gsuid_core/utils/image/image_tools.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/gsuid_core/utils/image/image_tools.py b/gsuid_core/utils/image/image_tools.py index 79b8192..baa44b8 100644 --- a/gsuid_core/utils/image/image_tools.py +++ b/gsuid_core/utils/image/image_tools.py @@ -16,23 +16,34 @@ TEXT_PATH = Path(__file__).parent / 'texture2d' BG_PATH = Path(__file__).parents[1] / 'default_bg' -async def get_event_avatar(ev: Event) -> Image.Image: +async def get_event_avatar( + ev: Event, avatar_path: Optional[Path] = None +) -> Image.Image: + img = None if 'avatar' in ev.sender and ev.sender['avatar']: avatar_url = ev.sender['avatar'] content = (await sget(avatar_url)).content return Image.open(BytesIO(content)).convert('RGBA') - else: + elif avatar_path: + pic_path_list = list(avatar_path.iterdir()) + if pic_path_list: + path = random.choice(pic_path_list) + img = Image.open(path).convert('RGBA') + + if img is None: img = Image.open(TEXT_PATH / 'icon.jpg').convert('RGBA') - return img + + return img async def get_avatar_with_ring( ev: Event, size: int = 300, + avatar_path: Optional[Path] = None, bg_color: Union[Tuple[int, int, int], None] = None, is_ring: bool = True, ) -> Image.Image: - avatar = await get_event_avatar(ev) + avatar = await get_event_avatar(ev, avatar_path) return await draw_pic_with_ring(avatar, size, bg_color, is_ring)