From 6ded28d5bcec5f8b4fa96d60602cb182356d1895 Mon Sep 17 00:00:00 2001 From: KimigaiiWuyi <444835641@qq.com> Date: Wed, 18 Oct 2023 00:32:39 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=94=AF=E6=8C=81=E5=88=86?= =?UTF-8?q?=E5=B1=82=E5=9C=B0=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + README.md | 2 +- .../GetMapImage/GenshinMap/genshinmap/img.py | 6 +-- .../GenshinMap/genshinmap/models.py | 10 +++++ .../GenshinMap/genshinmap/utils.py | 10 ++--- fastapi_genshin_map/GetMapImage/download.py | 10 +++++ .../GetMapImage/get_map_image.py | 37 +++++++++++++----- .../GetMapImage/texture2d/mark_0.png | Bin 0 -> 9439 bytes .../GetMapImage/texture2d/mark_1.png | Bin 0 -> 10452 bytes .../GetMapImage/texture2d/mark_2.png | Bin 0 -> 10709 bytes .../GetMapImage/texture2d/mark_3.png | Bin 0 -> 11005 bytes .../GetMapImage/texture2d/mark_B.png | Bin 0 -> 10071 bytes 12 files changed, 58 insertions(+), 18 deletions(-) create mode 100644 fastapi_genshin_map/GetMapImage/download.py create mode 100644 fastapi_genshin_map/GetMapImage/texture2d/mark_0.png create mode 100644 fastapi_genshin_map/GetMapImage/texture2d/mark_1.png create mode 100644 fastapi_genshin_map/GetMapImage/texture2d/mark_2.png create mode 100644 fastapi_genshin_map/GetMapImage/texture2d/mark_3.png create mode 100644 fastapi_genshin_map/GetMapImage/texture2d/mark_B.png diff --git a/.gitignore b/.gitignore index 76cb155..b3aa60a 100644 --- a/.gitignore +++ b/.gitignore @@ -131,4 +131,5 @@ dmypy.json # 地图资源 fastapi_genshin_map/GetMapImage/map_data fastapi_genshin_map/GetMapImage/resource_data +fastapi_genshin_map/GetMapImage/icon_data fastapi_genshin_map/GetMapImage/genshinmap.log \ No newline at end of file diff --git a/README.md b/README.md index 391fedc..c21f6e0 100644 --- a/README.md +++ b/README.md @@ -43,4 +43,4 @@ + [GPL-3.0 License](https://github.com/KimigaiiWuyi/GenshinUID/blob/main/LICENSE) ©[@KimigaiiWuyi](https://github.com/KimigaiiWuyi) ## 丨返回图示例 -![测试.jpg](https://s2.loli.net/2022/10/17/D2cI5tQdgVk3Uuz.jpg) +![测试.jpg](https://s2.loli.net/2023/10/18/Khd5LRQF3HqrEVD.jpg) diff --git a/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/img.py b/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/img.py index 4facad1..4d12938 100644 --- a/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/img.py +++ b/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/img.py @@ -6,7 +6,7 @@ import numpy as np from sklearn.cluster import KMeans from shapely.geometry import Point, Polygon -from .models import XYPoint +from .models import XYPoint, XYZPoint Pos = Tuple[float, float] Poses = List[XYPoint] @@ -14,8 +14,8 @@ Points = List[Point] def k_means_points( - points: List[XYPoint], length: int = 500, clusters: int = 3 -) -> List[Tuple[XYPoint, XYPoint, Poses]]: + points: List[XYZPoint], length: int = 500, clusters: int = 3 +) -> List[Tuple[XYZPoint, XYZPoint, Poses]]: """ 通过 K-Means 获取集群坐标列表 diff --git a/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/models.py b/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/models.py index 5e97c07..02d8f48 100644 --- a/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/models.py +++ b/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/models.py @@ -59,6 +59,10 @@ class Point(BaseModel): author_name: str ctime: str display_state: int + area_id: int + ext_attrs: str + z_level: int + icon_sign: int class Slice(BaseModel): @@ -100,6 +104,12 @@ class XYPoint(NamedTuple): y: float +class XYZPoint(NamedTuple): + x: float + y: float + z: int + + class Kind(BaseModel): id: int name: str diff --git a/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/utils.py b/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/utils.py index d747225..e017251 100644 --- a/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/utils.py +++ b/fastapi_genshin_map/GetMapImage/GenshinMap/genshinmap/utils.py @@ -8,7 +8,7 @@ from asyncio import gather, create_task from PIL import Image from httpx import AsyncClient -from .models import Maps, Point, XYPoint +from .models import Maps, Point, XYPoint, XYZPoint CLIENT = AsyncClient() @@ -76,7 +76,7 @@ async def get_map_by_pos( return await get_img(map.slices[_pos_to_index(x, y)]) -def get_points_by_id(id_: int, points: List[Point]) -> List[XYPoint]: +def get_points_by_id(id_: int, points: List[Point]) -> List[XYZPoint]: """ 根据 Label ID 获取坐标点 @@ -91,13 +91,13 @@ def get_points_by_id(id_: int, points: List[Point]) -> List[XYPoint]: `list[XYPoint]` """ return [ - XYPoint(point.x_pos, point.y_pos) + XYZPoint(point.x_pos, point.y_pos, point.z_level) for point in points if point.label_id == id_ ] -def convert_pos(points: List[XYPoint], origin: List[int]) -> List[XYPoint]: +def convert_pos(points: List[XYZPoint], origin: List[int]) -> List[XYZPoint]: """ 将米游社资源坐标转换为以左上角为原点的坐标系的坐标 @@ -118,7 +118,7 @@ def convert_pos(points: List[XYPoint], origin: List[int]) -> List[XYPoint]: >>> convert_pos(points, origin) [XYPoint(x=6044, y=9335), XYPoint(x=644, y=6135)] """ - return [XYPoint(x + origin[0], y + origin[1]) for x, y in points] + return [XYZPoint(x + origin[0], y + origin[1], z) for x, y, z in points] def convert_pos_crop( diff --git a/fastapi_genshin_map/GetMapImage/download.py b/fastapi_genshin_map/GetMapImage/download.py new file mode 100644 index 0000000..8803a6d --- /dev/null +++ b/fastapi_genshin_map/GetMapImage/download.py @@ -0,0 +1,10 @@ +import aiofiles +import aiohttp + + +async def download_file(url, save_path): + async with aiohttp.ClientSession() as session: + async with session.get(url) as response: + if response.status == 200: + async with aiofiles.open(save_path, "wb") as f: + await f.write(await response.read()) diff --git a/fastapi_genshin_map/GetMapImage/get_map_image.py b/fastapi_genshin_map/GetMapImage/get_map_image.py index e863bdb..06f9cc9 100644 --- a/fastapi_genshin_map/GetMapImage/get_map_image.py +++ b/fastapi_genshin_map/GetMapImage/get_map_image.py @@ -9,6 +9,7 @@ from PIL import Image from .GenshinMap.genshinmap import img, models, request, utils from .logger import logger +from .download import download_file Image.MAX_IMAGE_PIXELS = 333120000 router = APIRouter(prefix="/get_map") @@ -16,6 +17,7 @@ TEXT_PATH = Path(__file__).parent / "texture2d" mark_quest = Image.open(TEXT_PATH / "mark_quest.png").resize((32, 32)) MAP = Path(__file__).parent / "map_data" RESOURCE_PATH = Path(__file__).parent / "resource_data" +ICON_PATH = Path(__file__).parent / "icon_data" CHASM_PATH = MAP / "chasm.png" ENKANOMIYA_PATH = MAP / "enkanomiya.png" TEYVAT_PATH = MAP / "teyvat.png" @@ -30,6 +32,9 @@ MAP_ID_DICT = { # MapID.golden_apple_archipelago, # 金苹果群岛 } +if not ICON_PATH.exists(): + ICON_PATH.mkdir(exist_ok=True) + @router.on_event("startup") async def create_genshin_map(): @@ -89,15 +94,16 @@ async def get_map_response( return save_path maps = await request.get_maps(map_id) - labels = await request.get_labels(map_id) + trees = await request.get_labels(map_id) # 请求资源ID resource_id = 0 - for label in labels: - for child in label.children: - if resource_name == child.name: - resource_id = child.id - resource_name = child.name + for tree in trees: + for label in tree.children: + if resource_name == label.name: + resource_id = label.id + resource_name = label.name + icon = label.icon break if resource_id == 0: @@ -109,6 +115,7 @@ async def get_map_response( # 转换坐标 transmittable_converted = utils.convert_pos(transmittable, maps.detail.origin) + print(transmittable_converted) # 进行最密点获取 if is_cluster: @@ -167,9 +174,20 @@ async def get_map_response( int(point.x) - int(lt_point.x), int(point.y) - int(lt_point.y), ) - genshin_map.paste( - mark_quest, (point_trans[0] - 16, point_trans[1] - 16), mark_quest - ) + + icon_path = ICON_PATH / f"{resource_name}.png" + if not icon_path.exists(): + await download_file(icon, icon_path) + icon_pic = Image.open(icon_path).resize((52, 52)) + + if point.z <= 3: + mark = Image.open(TEXT_PATH / f"mark_{point.z}.png") + else: + mark = Image.open(TEXT_PATH / f"mark_B.png") + + mark.paste(icon_pic, (25, 17), icon_pic) + + genshin_map.paste(mark, (point_trans[0] - 50, point_trans[1] - 100), mark) # 转换RGB图 genshin_map = genshin_map.convert("RGB") @@ -199,6 +217,7 @@ async def get_map_by_point( if resource_name == a or resource_name in resource_aliases[m][a]: return a return resource_name + # 判断别名 resource_name = resource_aliases_to_name(resource_name) diff --git a/fastapi_genshin_map/GetMapImage/texture2d/mark_0.png b/fastapi_genshin_map/GetMapImage/texture2d/mark_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6a99d41416864f702bd4c29600848ea80a43e99f GIT binary patch literal 9439 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

94f%voyln5PI!0thgZFR~m| z(sYewu5i+|HNnq*HLuOD9$J}J{2j5z1``5j_lYbVJ>sRUMq=6pH6l#R25K<26l)H zPp6(0aqcuF!R$yM}s5JmEjGD zNCuSbkBybZ;bDg6rJo4!FL?yTM<5JSXA);2Ots6)QPtP-L4eBC^dYKYLQ{zLMb%hRCq?As?W?T%`*GvP0n6Z7wUM9Cb3R0r@+U ztMm^m`^nM34v}FG$N?zwLqRwu$K;qClVfsBj>$1OLIV7Mr`xPEiTdVa00000NkvXX Hu0mjfguHg+ literal 0 HcmV?d00001 diff --git a/fastapi_genshin_map/GetMapImage/texture2d/mark_3.png b/fastapi_genshin_map/GetMapImage/texture2d/mark_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f1550512c3a4a2ad506dab06bfa5465c9f78c75d GIT binary patch literal 11005 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 literal 0 HcmV?d00001 diff --git a/fastapi_genshin_map/GetMapImage/texture2d/mark_B.png b/fastapi_genshin_map/GetMapImage/texture2d/mark_B.png new file mode 100644 index 0000000000000000000000000000000000000000..19d47a76d6c40be58fc876a1e39b36bd242c9912 GIT binary patch literal 10071 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 literal 0 HcmV?d00001