Как наложить png изображения друг на друга в java?

166
16 июня 2022, 03:10

Пишу клиент-серверное приложение (браузерная игра) в команде. Являюсь backend программистом. Используем java Spring. В одной задаче нам требуется работа с изображениями, а точнее их наложение друг на друга (генератор гербов). Как это можно сделать? Приоритет - производительность и простота. Если под такие параметры во встроенных java классах нет средств, может быть есть сторонние библиотеки, или даже другие языки, совместимые с JVM (Kotlin, JPHP)?

Answer 1

В Java есть библиотека awt для создания пользовательских интерфейсов и также для рисования графики и изображений. Для наложения одной картинки на другую, можно использовать метод drawImage. Передаём ему на вход картинку BufferedImage и координаты левой верхней точки, куда её рисовать. Для вращения картинки можно использовать метод rotate.

Например, есть массив картинок png с буквами. Нужно составить из них слово, так чтобы каждая последующая буква немного наезжала на предыдущую на 40% её ширины:

int quantity = 10;
int width = 10;
int height = 10;
BufferedImage[] letters = new BufferedImage[quantity];
BufferedImage captchaImg =
        new BufferedImage(width + width * (quantity - 1) / 10 * 6, height,
                BufferedImage.TYPE_INT_ARGB);
for (int i = 0; i < quantity; i++) {
    captchaImg.getGraphics().drawImage(letters[i], width * i / 10 * 6, 0, null);
}

См. «Creating simple captcha»

READ ALSO
Java JSON parse error

Java JSON parse error

Подскажите, пожалуйстаЕсть 2 таблицы в БД с соотношением @ManyToMany с соединением через третью таблицу

226
Приведение double к short в Java

Приведение double к short в Java

При попытке привести double x к типу short

193
Обход и добавление в БДП

Обход и добавление в БДП

Изучаю структуры данных и пытаюсь создать бинарное дерево поиска с дженериками и пройтись по нему в глубину in orderКогда вызываю метод inOrder...

181
JAVA. счетчик попыток

JAVA. счетчик попыток

недавно начал изучать javaЗадание: сделать игру, в которой пользователю нужно угадать цифру от 0 до 100 + в конце сделать счетчик попыток

198