Вторник, 23 Апреля 2024, 21:03

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Java » Java.Проверить изображение на пустоту?
Java.Проверить изображение на пустоту?
NecrolichДата: Пятница, 27 Ноября 2015, 19:22 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Как проверить пустое ли изображение? Пустое т.е в нем ничего не нарисовано т.е многотонный фон, заливка одного цвета.
AlexanderBekkerДата: Пятница, 27 Ноября 2015, 19:53 | Сообщение # 2
BekkerDev Studio
Сейчас нет на сайте
Извлекаешь массив пикселей из BufferedImage:
Код
int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();

И работаешь с этим массивом, проверяя в нём совпадение цветов.

Код
boolean transparent = true;
for (int i = 0; i < pixels.length && transparent; i++) {
   if (pixels[i] != 0) transparent = false;
}

Так, например, можно проверить, нарисовано ли что-то в изображении.


Разработчик, композитор и издатель инди-игр в Steam.
Редактор карт: BekkerDev Level Editor 4
Страница разработчика в Steam
Паблик ВК: BekkerDev Studio


Сообщение отредактировал Void52 - Пятница, 27 Ноября 2015, 19:58
YellowAfterlifeДата: Пятница, 27 Ноября 2015, 19:55 | Сообщение # 3
Сейчас нет на сайте
Смотря на каком API. Но, общая идея в том, что пройти по всем пикселям, чтобы выяснить. одинаковы ли они. Обычно есть какой-то метод, возвращающий цвет пикселя на указанных координатах.
У BufferedImage это getRGB(x, y), что позволяет
Код

public static boolean imageIsEmpty(BufferedImage img) {
int w = img.getWidth();
int h = img.getHeight();
int p = img.getRGB(0, 0); // цвет пискеля в верхнем левом углу
for (int y = 0; y < h; y++)
for (int x = 0; x < w; x++) {
// если пиксель не совпадает с верхним левым то изображение не пустое.
if (img.getRGB(x, y) != p) return false;
}
return true;
}

ред.: приведенный выше метод тоже подходит, с пометкой про то что он проверяет на то что изображение действительно пустое (RGBA 0, 0, 0, 0) а не просто залито одним цветом.




Сообщение отредактировал YellowAfterlife - Пятница, 27 Ноября 2015, 19:57
Форум игроделов » Программирование » Java » Java.Проверить изображение на пустоту?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг