From 0c5ce62e6e518c55805aa84c9c42664fb6f7e715 Mon Sep 17 00:00:00 2001 From: KimigaiiWuyi <444835641@qq.com> Date: Wed, 22 Nov 2023 00:54:16 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=96=B0=E5=A2=9E=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E7=BB=98=E5=9B=BE=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/download_resource/download_core.py | 2 +- gsuid_core/utils/image/image_tools.py | 26 +++++++++++++++++- gsuid_core/utils/image/texture2d/icon.jpg | Bin 0 -> 50937 bytes gsuid_core/utils/image/utils.py | 7 +++++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 gsuid_core/utils/image/texture2d/icon.jpg create mode 100644 gsuid_core/utils/image/utils.py diff --git a/gsuid_core/utils/download_resource/download_core.py b/gsuid_core/utils/download_resource/download_core.py index a2432e2..81837aa 100644 --- a/gsuid_core/utils/download_resource/download_core.py +++ b/gsuid_core/utils/download_resource/download_core.py @@ -42,7 +42,7 @@ async def find_fastest_url(urls: Dict[str, str]): fastest_time = float('inf') for result in results: - if isinstance(result, Exception): + if isinstance(result, (Exception, BaseException)): continue tag, url, elapsed_time = result if elapsed_time < fastest_time: diff --git a/gsuid_core/utils/image/image_tools.py b/gsuid_core/utils/image/image_tools.py index 82243fa..1f56577 100644 --- a/gsuid_core/utils/image/image_tools.py +++ b/gsuid_core/utils/image/image_tools.py @@ -8,12 +8,34 @@ import httpx from httpx import get from PIL import Image, ImageDraw, ImageFont +from gsuid_core.models import Event +from gsuid_core.utils.image.utils import sget from gsuid_core.data_store import get_res_path TEXT_PATH = Path(__file__).parent / 'texture2d' BG_PATH = Path(__file__).parents[1] / 'default_bg' +async def get_event_avatar(ev: Event) -> Image.Image: + 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: + img = Image.open(TEXT_PATH / 'icon.jpg').convert('RGBA') + return img + + +async def get_avatar_with_ring( + ev: Event, + size: int = 300, + bg_color: Tuple[int, int, int] | None = None, + is_ring: bool = True, +) -> Image.Image: + avatar = await get_event_avatar(ev) + return await draw_pic_with_ring(avatar, size, bg_color, is_ring) + + async def shift_image_hue(img: Image.Image, angle: float = 30) -> Image.Image: alpha = img.getchannel('A') img = img.convert('HSV') @@ -195,7 +217,9 @@ async def get_qq_avatar( avatar_url = f'http://q1.qlogo.cn/g?b=qq&nk={qid}&s=640' elif avatar_url is None: avatar_url = 'https://q1.qlogo.cn/g?b=qq&nk=3399214199&s=640' - char_pic = Image.open(BytesIO(get(avatar_url).content)).convert('RGBA') + char_pic = Image.open(BytesIO((await sget(avatar_url)).content)).convert( + 'RGBA' + ) return char_pic diff --git a/gsuid_core/utils/image/texture2d/icon.jpg b/gsuid_core/utils/image/texture2d/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..17453c913e1b1f76d74740a1cdb1716b7d0ec292 GIT binary patch literal 50937 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

Z3 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 BxGewx literal 0 HcmV?d00001 diff --git a/gsuid_core/utils/image/utils.py b/gsuid_core/utils/image/utils.py new file mode 100644 index 0000000..1b0417e --- /dev/null +++ b/gsuid_core/utils/image/utils.py @@ -0,0 +1,7 @@ +import httpx + + +async def sget(url: str): + async with httpx.AsyncClient(timeout=None) as client: + resp = await client.get(url=url) + return resp