В настоящее время я работаю над динамическим загрузчиком анимации для персонажей в игре, и для этого мне нужно определить, является ли текущий кадр полностью пустым, чтобы перестать загружать больше спрайтов.
Это то, что я сейчас использую, чтобы узнать, пусто ли текущее изображение:
public static boolean isBlankImage(BufferedImage b) {
byte[] pixels1 = getPixels(b);
byte[] pixels2 = getPixels(getBlankImage(b.getWidth(), b.getHeight()));
return Arrays.equals(pixels1, pixels2);
}
private static BufferedImage getBlankImage(int width, int height) {
return new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
}
private static byte[] getPixels(BufferedImage b) {
byte[] pixels = ((DataBufferByte) b.getRaster().getDataBuffer()).getData();
return pixels;
}
Однако, как только я его запускаю, я получаю эту досадную ошибку:
Exception in thread "Thread-0" java.lang.ClassCastException:
java.awt.image.DataBufferInt cannot be cast to java.awt.image.DataBufferByte
Я пытался переключить тип кастинга, но все, что я получаю взамен, это:
Exception in thread "Thread-0" java.lang.ClassCastException:
java.awt.image.DataBufferByte cannot be cast to java.awt.image.DataBufferInt
Я везде искал ответ безрезультатно, поэтому вот мой вопрос: есть ли лучший функциональный способ проверить, является ли изображение полностью прозрачным?
Любая помощь будет принята с благодарностью.