RasterFormatException?

I was modifying my spritesheet loading class to use 64x64 sized images from another sheet, and it now throws this error:

Exception in thread "Thread-3" java.awt.image.RasterFormatException: (y + height) is outside of Raster
	at sun.awt.image.ByteInterleavedRaster.createWritableChild(Unknown Source)
	at java.awt.image.BufferedImage.getSubimage(Unknown Source)
	at com.natekramber.gfx.SpriteSheet.<init>(SpriteSheet.java:47)
	at com.natekramber.gfx.Screen.<init>(Screen.java:20)
	at com.natekramber.Menu.<init>(Menu.java:16)
	at com.natekramber.Game.init(Game.java:44)
	at com.natekramber.Game.run(Game.java:55)
	at java.lang.Thread.run(Unknown Source)

Here’s the spritesheet source:

package com.natekramber.gfx;

import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;

public class SpriteSheet {
	final int width16 = 16, height16 = 16, width64 = 64, height64 = 64
			;
	public final int rows16 = 10, cols16 = 10, rows64 = 4, cols64 = 10
			;
	public BufferedImage sheet16, sheet64
		;
	public BufferedImage[] sprites16, sprites64;
	
	public SpriteSheet() {
		try {
			sheet16 = ImageIO.read(SpriteSheet.class.getClassLoader().getResourceAsStream("img/spritesheet16.png"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		try {
			sheet64 = ImageIO.read(SpriteSheet.class.getClassLoader().getResourceAsStream("img/spritesheet64.png"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		sprites16 = new BufferedImage[rows16 * cols16];
	
		for (int i = 0; i < rows16; i++) {
			for (int j = 0; j < cols16; j++) {
				sprites16[(i * cols16) + j] = sheet16.getSubimage(
			            i * width16 + i * 3,
			            j * height16 + j * 3,
			            width16,
			            height16
			        );
			}
		}
		
		sprites64 = new BufferedImage[rows64 * cols64];
		
		for (int i = 0; i < rows64; i++) {
			for (int j = 0; j < cols64; j++) {
				sprites64[(i * cols64) + j] = sheet64.getSubimage(            //    <--Error is thrown here, line 47
						i * width64 + i * 3,
						j * height64 + j * 3,
						width64,
						height64
					);
			}
		}
	}
}

Why is it doing this? I have the exact same code for another game, and it doesn’t throw any errors. It’s even almost the same for the loader above it.

Thanks,
-Nathan

It’s pretty simple: just like the exception message says: your sub-image is not fully contained in the parent image.

Check your coords.