mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-04 19:29:59 +08:00
修改优化开箱显示图片
This commit is contained in:
@@ -14,6 +14,56 @@ BASE_PATH = IMAGE_PATH / "csgo_cases"
|
||||
ICON_PATH = IMAGE_PATH / "_icon"
|
||||
|
||||
|
||||
async def draw_card(skin: BuffSkin, rand: str) -> BuildImage:
|
||||
"""构造抽取图片
|
||||
|
||||
Args:
|
||||
skin (BuffSkin): BuffSkin
|
||||
rand (str): 磨损
|
||||
|
||||
Returns:
|
||||
BuildImage: BuildImage
|
||||
"""
|
||||
name = skin.name + "-" + skin.skin_name + "-" + skin.abrasion
|
||||
file_path = BASE_PATH / cn2py(skin.case_name.split(",")[0]) / f"{cn2py(name)}.jpg"
|
||||
if not file_path.exists():
|
||||
logger.warning(f"皮肤图片: {name} 不存在", "开箱")
|
||||
skin_bk = BuildImage(
|
||||
460, 200, color=(25, 25, 25, 100), font_size=25, font="CJGaoDeGuo.otf"
|
||||
)
|
||||
if file_path.exists():
|
||||
skin_image = BuildImage(205, 153, background=file_path)
|
||||
await skin_bk.apaste(skin_image, (10, 30), alpha=True)
|
||||
await skin_bk.aline((220, 10, 220, 180))
|
||||
await skin_bk.atext((10, 10), skin.name, (255, 255, 255))
|
||||
name_icon = BuildImage(20, 20, background=ICON_PATH / "name_white.png")
|
||||
await skin_bk.apaste(name_icon, (240, 13), True)
|
||||
await skin_bk.atext((265, 15), f"名称:", (255, 255, 255), font_size=20)
|
||||
await skin_bk.atext(
|
||||
(300, 9),
|
||||
f"{skin.skin_name + ('(St)' if skin.is_stattrak else '')}",
|
||||
(255, 255, 255),
|
||||
)
|
||||
tone_icon = BuildImage(20, 20, background=ICON_PATH / "tone_white.png")
|
||||
await skin_bk.apaste(tone_icon, (240, 45), True)
|
||||
await skin_bk.atext((265, 45), "品质:", (255, 255, 255), font_size=20)
|
||||
await skin_bk.atext((300, 40), COLOR2NAME[skin.color][:2], COLOR2COLOR[skin.color])
|
||||
type_icon = BuildImage(20, 20, background=ICON_PATH / "type_white.png")
|
||||
await skin_bk.apaste(type_icon, (240, 73), True)
|
||||
await skin_bk.atext((265, 75), "类型:", (255, 255, 255), font_size=20)
|
||||
await skin_bk.atext((300, 70), skin.weapon_type, (255, 255, 255))
|
||||
price_icon = BuildImage(20, 20, background=ICON_PATH / "price_white.png")
|
||||
await skin_bk.apaste(price_icon, (240, 103), True)
|
||||
await skin_bk.atext((265, 105), "价格:", (255, 255, 255), font_size=20)
|
||||
await skin_bk.atext((300, 102), str(skin.sell_min_price), (0, 255, 98))
|
||||
abrasion_icon = BuildImage(20, 20, background=ICON_PATH / "abrasion_white.png")
|
||||
await skin_bk.apaste(abrasion_icon, (240, 133), True)
|
||||
await skin_bk.atext((265, 135), "磨损:", (255, 255, 255), font_size=20)
|
||||
await skin_bk.atext((300, 130), skin.abrasion, (255, 255, 255))
|
||||
await skin_bk.atext((228, 165), f"({rand})", (255, 255, 255))
|
||||
return skin_bk
|
||||
|
||||
|
||||
async def generate_skin(skin: BuffSkin, update_count: int) -> Optional[BuildImage]:
|
||||
"""构造皮肤图片
|
||||
|
||||
@@ -27,13 +77,13 @@ async def generate_skin(skin: BuffSkin, update_count: int) -> Optional[BuildImag
|
||||
file_path = BASE_PATH / cn2py(skin.case_name.split(",")[0]) / f"{cn2py(name)}.jpg"
|
||||
if not file_path.exists():
|
||||
logger.warning(f"皮肤图片: {name} 不存在", "查看武器箱")
|
||||
return None
|
||||
if skin.color == "CASE":
|
||||
skin_img = BuildImage(200, 200, background=file_path)
|
||||
case_bk = BuildImage(
|
||||
700, 200, color=(25, 25, 25, 100), font_size=25, font="CJGaoDeGuo.otf"
|
||||
)
|
||||
await case_bk.apaste(skin_img, (10, 10), True)
|
||||
if file_path.exists():
|
||||
skin_img = BuildImage(200, 200, background=file_path)
|
||||
await case_bk.apaste(skin_img, (10, 10), True)
|
||||
await case_bk.aline((250, 10, 250, 190))
|
||||
await case_bk.aline((280, 160, 660, 160))
|
||||
name_icon = BuildImage(30, 30, background=ICON_PATH / "box_white.png")
|
||||
@@ -86,11 +136,12 @@ async def generate_skin(skin: BuffSkin, update_count: int) -> Optional[BuildImag
|
||||
skin_bk = BuildImage(
|
||||
235, 250, color=(25, 25, 25, 100), font_size=25, font="CJGaoDeGuo.otf"
|
||||
)
|
||||
skin_image = BuildImage(205, 153, background=file_path)
|
||||
if file_path.exists():
|
||||
skin_image = BuildImage(205, 153, background=file_path)
|
||||
await skin_bk.apaste(skin_image, (10, 30), alpha=True)
|
||||
update_count_icon = BuildImage(
|
||||
35, 35, background=ICON_PATH / "reload_white.png"
|
||||
)
|
||||
await skin_bk.apaste(skin_image, (10, 30), alpha=True)
|
||||
await skin_bk.aline((10, 180, 220, 180))
|
||||
await skin_bk.atext((10, 10), skin.name, (255, 255, 255))
|
||||
await skin_bk.apaste(update_count_icon, (140, 10), True)
|
||||
|
||||
Reference in New Issue
Block a user