import os import cairosvg from PIL import Image Image.MAX_IMAGE_PIXELS = None zmax = 6 tileSize = 256 tmpPath = "asset/tmp/" tilePath = "asset/tiles/" zMapPathSVG = "asset/svg/zmap/" output_width=None, output_height=None useSVG = False useSVG = True def checkPath(path): if os.path.exists(path): return else: os.makedirs(path) def svg2png(svg,png,size): cairosvg.svg2png( url = svgMap, output_width = size, output_height = size, write_to = zMapPath) for z in range(zmax + 1): print("Starting to work on zoomlevel: " + str(z)) size = pow(2,z) * tileSize zMapPath = tmpPath + str(z) + ".png" if useSVG: svgMap = zMapPathSVG + str(z) + ".svg" svg2png(svgMap,zMapPath,size) img = Image.open(zMapPath) top = pow(2,z) step = tileSize for x in range(top): x0 = x*step x1 = x0 + step for y in range(top): y0 = y*step y1 = y0 + step area = (x0,y0,x1,y1) crop = img.crop(area) path = tilePath + str(z) + "/" + str(x) checkPath(path) fn = path + "/" + str(y) + ".png" tile = crop.resize((tileSize, tileSize)) tile.save(fn,"PNG")