mirror of
https://github.com/baiqwerdvd/ArknightsUID.git
synced 2025-05-04 19:17:33 +08:00
61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
from pathlib import Path
|
|
|
|
from gsuid_core.data_store import get_res_path
|
|
from gsuid_core.utils.error_reply import get_error
|
|
from gsuid_core.utils.image.convert import convert_img
|
|
from msgspec import json as msgjson
|
|
from PIL import Image, ImageDraw
|
|
|
|
from ..utils.ark_api import ark_skd_api
|
|
from ..utils.fonts.source_han_serif import sans_font_28
|
|
from ..utils.resource.RESOURCE_PATH import SKIN_PATH
|
|
|
|
TEXT_PATH = Path(__file__).parent / 'texture2D'
|
|
bg_img = Image.open(TEXT_PATH / 'bg.png')
|
|
base_info_img = Image.open(TEXT_PATH / 'base_info.png')
|
|
|
|
|
|
async def get_role_img(uid: str):
|
|
player_info = await ark_skd_api.get_game_player_info(uid)
|
|
if isinstance(player_info, int):
|
|
return get_error(player_info)
|
|
|
|
player_save_path = get_res_path(['ArknightsUID', 'players'])
|
|
|
|
with Path.open(player_save_path / f'{player_info.status.uid}.json', 'wb') as file:
|
|
file.write(msgjson.format(msgjson.encode(player_info), indent=4))
|
|
|
|
# 放 background
|
|
char_info = bg_img.copy()
|
|
|
|
# 放干员主立绘
|
|
secretary = player_info.status.secretary
|
|
# secretary_charId = secretary.charId
|
|
secretary_skinId = secretary.skinId.replace('@', '_')
|
|
|
|
secretary_char_img = (
|
|
Image.open(SKIN_PATH / f'{secretary_skinId}b.png').resize((768, 768)).convert('RGBA')
|
|
)
|
|
char_info.paste(secretary_char_img, (0, -20), secretary_char_img)
|
|
|
|
# 放基础信息
|
|
base_info = base_info_img.copy()
|
|
base_info_draw = ImageDraw.Draw(base_info)
|
|
base_info_draw.text(
|
|
(400, 163),
|
|
player_info.status.name,
|
|
(255, 255, 255),
|
|
sans_font_28,
|
|
'lm',
|
|
)
|
|
|
|
# 放入职信息
|
|
|
|
base_info.resize((475, 400)).convert('RGBA')
|
|
char_info.paste(base_info, (200, 0), base_info)
|
|
|
|
char_info.show()
|
|
|
|
res = await convert_img(char_info)
|
|
return res
|