E:\hgames\map_gen\地图生成器\trans_map
python -m venv venv
.\venv\Scripts\Activate.ps1安装依赖:
pip install Pillow
记得要切换
然后用GIMP来获取图像的RGB信息


from PIL import Image
def map_to_matrix(image_path):
# 打开图像
img = Image.open(image_path)
width, height = img.size
# 创建一个空的矩阵
matrix = []
for y in range(height):
row = []
for x in range(width):
# 获取像素颜色
pixel_color = img.getpixel((x, y))
# 这里假设海洋是蓝色(可以根据实际情况调整判断条件)
if pixel_color[0] == 107 and pixel_color[1] == 209 and pixel_color[2] == 231:
row.append(1)
else:
row.append(0)
matrix.append(row)
return matrix
def matrix_to_image(matrix):
# 假设矩阵中的 0 表示陆地(黑色),1 表示海洋(蓝色)
height = len(matrix)
width = len(matrix[0])
img = Image.new('RGB', (width, height))
pixels = img.load()
for y in range(height):
for x in range(width):
if matrix[y][x] == 0:
pixels[x, y] = (0, 0, 0) # 陆地为黑色
else:
pixels[x, y] = (0, 0, 255) # 海洋为蓝色
return img
matrix = map_to_matrix('1.png')
for row in matrix:
print(row)
# 假设 matrix 是你已经得到的矩阵
result_image = matrix_to_image(matrix)
result_image.show() # 显示生成的图像
result_image.save('reconstructed_image.png') # 保存图像

from PIL import Image
import json
def map_to_matrix(image_path):
# 打开图像
img = Image.open(image_path)
# 等比例缩小图像到 64x64
img = img.resize((64, 64), Image.LANCZOS)
width, height = img.size
# 创建一个空的矩阵
matrix = []
for y in range(height):
row = []
for x in range(width):
# 获取像素颜色
pixel_color = img.getpixel((x, y))
# 这里假设海洋是蓝色(可以根据实际情况调整判断条件)
if pixel_color[0] == 110 and pixel_color[1] == 211 and pixel_color[2] == 231:
row.append(2048)
else:
row.append(2816)
matrix.append(row)
return matrix
def matrix_to_image(matrix):
# 假设矩阵中的 0 表示陆地(黑色),1 表示海洋(蓝色)
height = len(matrix)
width = len(matrix[0])
print(height)
print(width)
img = Image.new('RGB', (width, height))
pixels = img.load()
for y in range(height):
for x in range(width):
if matrix[y][x] == 2816:
pixels[x, y] = (0, 0, 0) # 陆地为黑色
else:
pixels[x, y] = (0, 0, 255) # 海洋为蓝色
return img
def flatten_matrix(matrix):
return [item for row in matrix for item in row]
def add_zeros_to_array(flattened_matrix):
n = len(flattened_matrix) * 5
new_array = flattened_matrix + [0] * n
return new_array
def write_array_to_file(array, file_path):
# 在数组开头添加"data:"
data_str = '"data":' + json.dumps(array)
with open(file_path, 'w') as file:
file.write(data_str)
matrix = map_to_matrix('1.png')
flattened_matrix = flatten_matrix(matrix)
new_array = add_zeros_to_array(flattened_matrix)
write_array_to_file(new_array, 'output.txt')
# 假设 matrix 是你已经得到的矩阵
result_image = matrix_to_image(matrix)
result_image.show() # 显示生成的图像
result_image.save('reconstructed_image.png') # 保存图像最后改进了一下代码,首先把图像缩放到64X64,这样的地图才能看啊,否则太细节了
之后是加入了把矩阵打平成数组的辅助函数,并且给后面加上了000000

规则在这里
然后生成了outputs.txt

暂时先不解析地图本身
而是用拷贝粘贴的办法

在RMMZ里把玩家初始位置和船的位置一设置好了以后
就可以了开干了

==================================================
1、大陆与海的边缘还不自然,这个再说看咋整
2、地图用谷歌的就有一个麻烦的地方出来了,没办法关掉所有的标记,所以看来得找一张全世界的矢量地图然后裁切号,最后生成
3、上下左右需要生成一堆的事件,让船可以切换地图
这样才能“遨游”世界