Init Commit
This commit is contained in:
commit
e1ad364124
BIN
areno_map.png
Normal file
BIN
areno_map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 116 MiB |
3
export_tiles.bat
Normal file
3
export_tiles.bat
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
@echo off
|
||||||
|
python tile_exporter.py
|
||||||
|
pause
|
||||||
55
tile_exporter.py
Normal file
55
tile_exporter.py
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
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 0–7
|
||||||
|
|
||||||
|
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)
|
||||||
Loading…
Reference in New Issue
Block a user