mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
import os
|
|
from PIL import Image
|
|
import concurrent.futures
|
|
|
|
zoom = 16
|
|
path = "output"
|
|
|
|
def crop_image(filename):
|
|
img = Image.open(os.path.join(path, filename))
|
|
center_X, center_Y = filename.removesuffix(".png").split("_")
|
|
center_X = int(center_X)
|
|
center_Y = int(center_Y)
|
|
w, h = img.size
|
|
|
|
box_top_left = (w / 2 - 256, h / 2 - 256, w / 2, h / 2)
|
|
box_top_right = (w / 2, h / 2 - 256, w / 2 + 256, h / 2)
|
|
box_bottom_left = (w / 2 - 256, h / 2, w / 2, h / 2 + 256)
|
|
box_bottom_right = (w / 2, h / 2, w / 2 + 256, h / 2 + 256)
|
|
|
|
if not os.path.exists(f"output/{zoom}/{center_X - 1}"):
|
|
os.mkdir(f"output/{zoom}/{center_X - 1}")
|
|
|
|
if not os.path.exists(f"output/{zoom}/{center_X}"):
|
|
os.mkdir(f"output/{zoom}/{center_X}")
|
|
|
|
img.crop(box_top_left).save(f"output/{zoom}/{center_X - 1}/{center_Y - 1}.png")
|
|
img.crop(box_top_right).save(f"output/{zoom}/{center_X}/{center_Y - 1}.png")
|
|
img.crop(box_bottom_left).save(f"output/{zoom}/{center_X - 1}/{center_Y}.png")
|
|
img.crop(box_bottom_right).save(f"output/{zoom}/{center_X}/{center_Y}.png")
|
|
|
|
return True
|
|
|
|
filenames = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
|
|
|
|
# Create output folder
|
|
if not os.path.exists(f"output/{zoom}"):
|
|
os.mkdir(f"output/{zoom}")
|
|
|
|
with concurrent.futures.ThreadPoolExecutor() as executor:
|
|
futures = [executor.submit(crop_image, filename) for filename in filenames]
|
|
results = [future.result() for future in concurrent.futures.as_completed(futures)] |