WorldMapTile/tile_exporter.py
2026-01-03 00:05:18 +01:00

56 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from PIL import Image
import os
import math
Image.MAX_IMAGE_PIXELS = None # Schutz bei großen Bildern deaktivieren
# === KONFIGURATION ===
image_path = "areno_map.png" # Pfad zur großen Karte
output_dir = "tiles" # Zielverzeichnis für die Tiles
tile_size = 256 # Größe eines Tiles
max_zoom = 7 # Zoom-Stufen 07
def generate_leaflet_tiles(image_path, output_dir, tile_size=256, max_zoom=7):
original = Image.open(image_path)
orig_width, orig_height = original.size
for z in range(max_zoom + 1):
scale = 2 ** (max_zoom - z)
width = math.ceil(orig_width / scale)
height = math.ceil(orig_height / scale)
# Kein Resize bei maximaler Zoomstufe (Originalgröße)
if z == max_zoom:
resized = original
else:
resized = original.resize((width, height), Image.Resampling.LANCZOS)
tiles_x = math.ceil(width / tile_size)
tiles_y = math.ceil(height / tile_size)
offset_x = tiles_x // 2
offset_y = tiles_y // 2
for x in range(tiles_x):
for y in range(tiles_y):
left = x * tile_size
upper = y * tile_size
right = min(left + tile_size, width)
lower = min(upper + tile_size, height)
tile = resized.crop((left, upper, right, lower))
tile_x = x - offset_x
tile_y = y - offset_y
dir_path = os.path.join(output_dir, str(z), str(tile_x))
os.makedirs(dir_path, exist_ok=True)
tile_path = os.path.join(dir_path, f"{tile_y}.png")
tile.save(tile_path)
print(f"✅ Zoom {z} fertig {tiles_x}×{tiles_y} Tiles")
print("🎉 Alle Tiles erfolgreich generiert.")
generate_leaflet_tiles(image_path, output_dir, tile_size, max_zoom)