nguhmap/generate_tiles.ts
2025-09-12 21:35:40 +02:00

21 lines
888 B
TypeScript

import { $ } from "bun";
let path = process.argv[2];
await $`mkdir -p /tmp/nguhmap`
for (let zoomlevel = 4; zoomlevel <= 4; ++zoomlevel) {
let size = 1024 << zoomlevel
console.log(`Resizing image for zoomlevel ${zoomlevel}: ${size}x${size}`)
await $`magick ${path} -resize ${size}x${size} /tmp/nguhmap/${zoomlevel}.png`
let file = `/tmp/nguhmap/${zoomlevel}`
console.log(`Cutting tiles for zoomlevel ${zoomlevel}`)
await $`mkdir -p public/tiles/${zoomlevel}`
for (let rx = 0; rx < 1 << (zoomlevel + 1); rx++) {
for (let ry = 0; ry < 1 << (zoomlevel + 1) ; ry++) {
console.log(`region: ${rx - (1 << zoomlevel)}/${ry - (1 << zoomlevel)}`)
await $`magick ${file}.png -crop 512x512+${rx*512}+${ry*512} public/tiles/${zoomlevel}/${rx - (1 << zoomlevel)}_${ry - (1 << zoomlevel)}.png`
}
}
}
await $`rm -rf /tmp/nguhmap`