Spritesheet/cutting an image

I have a spritesheet for a character and i’d like to be able to split it up in processing. Any way possible?
character

Sure. You can use get() with four parameters to grab rectangular regions from it.

PImage sheet;

void setup(){
  size(600,400);
  sheet = loadImage("sprite_sheet.png");
}

void draw(){
  background(0);
  image(sheet.get(20, 20, 100, 100), 100, 100);
}
2 Likes

Hi Hedgy,

You can also use the sprites labrary from @quark.
I think you can indicate the number of columns and rows in the constructor and the cuts will be done automatically.

1 Like

This works! Thanks so much.
Heres the code if you feel like reading my sloppy stuff haha:

PImage characterSprite;
	PImage characterUp, characterDown, characterLeft, characterRight;
	boolean isCharacterUp, isCharacterDown, isCharacterLeft, isCharacterRight;
	String currentSprite;

	public static void main(String[] args) {
		PApplet.main("zeldaremake.ZeldaRemake");
	}
	
	public void settings() {
		size(768,640);
	}
	
	public void setup() {
		characterSprite = loadImage("character.png");
	}
	
	
	public void keyPressed() {
		switch(key) {
		case 'w':
			isCharacterUp = true;
			break;
		
		case 's':
			isCharacterDown = true;
			break;
		
		case 'a':
			isCharacterLeft = true;
			break;
			
		case 'd':
			isCharacterRight = true;
			break;
		}
	}
	
	public void keyReleased() {
		switch(key) {
		case 'w':
			isCharacterUp = false;
			break;
		
		case 's':
			isCharacterDown = false;
			break;
		
		case 'a':
			isCharacterLeft = false;
			break;
			
		case 'd':
			isCharacterRight = false;
			break;
		}
	}

	public void draw() {
		movement();
	}
	
	public void movement() {
		if(isCharacterUp == true) {
			image(characterSprite.get(0, 0, 16, 16), width/2, height/2);
		}
		if(isCharacterDown == true) {
			image(characterSprite.get(16, 0, 16, 16), width/2, height/2);
		}
		if(isCharacterLeft == true) {
			image(characterSprite.get(32, 0, 16, 16), width/2, height/2);
		}
		if(isCharacterRight == true) {
			image(characterSprite.get(48, 0, 16, 16), width/2, height/2);
		}
	}
}
2 Likes

Thanks so much for sharing your solution, @Hedgy – this is really helpful for people who have similar problems later!

2 Likes