Написание большого изображения Sprite Sheet - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь создать лист спрайтов, объединив цикл анимации в одно изображение и записав его в одно изображение. Однако я получаю это исключение: «Максимальный поддерживаемый размер изображения составляет 65500 пикселей». Это 2 вопроса.

1.) Что такое размер изображения 65500 пикселей? Означает ли это, что размер (ширина или высота) должен быть меньше 65500, или что общая площадь (ширина * высота) должна быть меньше 65500 пикселей?

2.) Есть ли способ обойти это? Мне нужен спрайт-лист шириной: 426 667 пикселей и высотой: 240 пикселей (для общей площади 102 400 000 пикселей). Прямо сейчас я сохраняю это как файл JPEG. Существуют ли разные размеры для записи разных типов файлов?

Вот код, который у меня есть:

int length = 1000;
BufferedImage sheet = new BufferedImage(1280*length/3, 720/3, 
BufferedImage.TYPE_INT_RGB);
for(int i = 0; i < length; i++) {
    String path = i+".jpg";
    try {
        load = ImageIO.read(getClass().getResourceAsStream(path));
        sheet.getGraphics().drawImage(load, i*1280/3, 0, null);
    }catch (IOException e) {
        System.out.println("Failed to load "+path);
        e.printStackTrace();
    }
}
try {
    ImageIO.write(sheet, "jpg", new File("spriteSheet"));
} catch (IOException e) {
    System.out.println("Failed to write spriteSheet.");
    e.printStackTrace();
}
this.stop();
...