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