diff --git a/Sheet.py b/Sheet.py new file mode 100644 index 0000000..5b62fd1 --- /dev/null +++ b/Sheet.py @@ -0,0 +1,61 @@ +import json +from PIL import Image +from pathlib import Path + +# Create new sprite +class Sprite: + + def __init__(self,image,size): + self.image = Image.open(image).convert("RGBA") + + # Resize image to size[width,height] if nessesary + if(self.image.width != size[0] or self.image.height != size[1]): + self.resize() + + # Resize image without maintaining aspect ratio + def resize(self,resample=Image.BICUBIC): + rw = self.image.width + rh = self.image.height + + # Scale image width + if(rw != size[0]): + rw = int(self.image.height * self.image.width / size[0]) + + # Scale image height + if(rh != size[1]): + rh = int(self.image.width * size[1] / self.image.height) + + self.image = self.image.resize((rw,rh),resample) + +# -------------------------------- + +# Create new sheet of sprites +class Sheet: + + def __init__(self,folder = None): + self.sprites = [] + + # Auto-import sprite folder + if(folder): + self.path = Path(folder).glob("**/*.png") + self.sprites = [x for x in self.path] + + # Concatinate sprites vertically + def concat(self,size): + sheet = Image.new("RGBA",(size[0],size[1] * len(self.sprites))) + + for i, sprite in enumerate(self.sprites): + sheet.paste(Sprite(sprite,size).image,(0,size[1] * i)) + + return sheet + + # Add sprite by path + def add(self,path): + self.sprites.append(path) + + # Create and save spritesheet + def put(self,dest,size): + sheet = self.concat(size) + sheet.save(dest) + + print(len(self.sprites)) \ No newline at end of file