Я пытаюсь загрузить этот спрайт в массив буферизованного изображения (каждый спрайт в один BufferedImage):
Я открыл этот файл в фотошопе. Ширина 500, а высота 666. Итак, согласно моим расчетам, мне нужно зациклиться 64 раза (8 строк и 8 столбцов), и для каждого спрайта его ширина 500/8 (62,5), а его высота 666/8. (83,25). Поскольку getSubImage принимает только параметры типа int, я был вынужден указать ширину 62 и высоту 83 (и я думаю, именно поэтому мои изображения обрезаются).
Вот код для загрузки спрайтов (я поместил их в JFrame, чтобы показать вам результаты).
public class Test{
public static void main(String [] args){
BufferedImage[] sprites = null;
int width = 62;
int height = 83;
try {
BufferedImage buff = ImageIO.read(Test.class.getResourceAsStream("cyclop.gif"));
sprites = new BufferedImage[64];
int rows = 8;
int cols = 8;
for (int i = 0; i < rows; i++){
for (int j = 0; j < cols; j++){
sprites[(i * cols) + j] = buff.getSubimage(i * width, j * height, width, height);
}
}
} catch (IOException e) {
e.printStackTrace();
}
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new FlowLayout());
for(BufferedImage bf : sprites)
frame.getContentPane().add(new JLabel(new ImageIcon(bf)));
frame.pack();
frame.setVisible(true);
}
}
Какие выходы:
Я немного потерялся (впервые делаю это) о том, как я могу загрузить каждый спрайт в BufferedImage. Есть идеи?