Last active
January 19, 2024 23:33
-
-
Save lalamax3d/80a8f96226f1fe1b8bacf6b747501f05 to your computer and use it in GitHub Desktop.
split_cube_pano_room.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PIL import Image | |
import os | |
''' | |
intent is to save main tiles and then stitch them horizontally. | |
like here >> https://github.com/doge/cubemap_converter (hrow) | |
''' | |
def split_image(image_path): | |
# Open the image | |
with Image.open(image_path) as img: | |
# Get the size of the image | |
width, height = img.size | |
# Calculate the size of each grid cell | |
cell_width = width // 3 | |
cell_height = height // 3 | |
# Loop through each cell and save the resulting image | |
cubeTileIds = [1,3,4,5,6,7] | |
cubeTilesDict = {1: "py", 3: "nx", 4: "pz", 5: "px", 6: "nz", 7: "ny"} | |
newImage = Image.new('RGB', (cell_width*6, cell_height)) | |
newArrangement = ['px','nx','py','ny','pz','nz'] | |
iter = 0 | |
for i in range(3): | |
for j in range(3): | |
# Calculate the coordinates of the cell | |
left = j * cell_width | |
top = i * cell_height | |
right = (j + 1) * cell_width | |
bottom = (i + 1) * cell_height | |
# Crop the cell from the original image | |
cell = img.crop((left, top, right, bottom)) | |
# Save the required cells on disk with correct names | |
if iter in cubeTileIds: | |
cell.save(os.path.join("textures", "cubeTile_" + cubeTilesDict[iter] + ".png")) | |
newImage.paste(cell, (cell_width*newArrangement.index(cubeTilesDict[iter]), 0)) | |
iter += 1 | |
newImage.save(os.path.join("textures", "cubeTile.png")) | |
print("Image split into 3x3 grid and saved as 9 separate images.") | |
if __name__ == '__main__': | |
# get image from kargs | |
import argparse | |
parser = argparse.ArgumentParser() | |
parser.add_argument("image", help="path to image") | |
args = parser.parse_args() | |
split_image(args.image) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment