Задать вопрос
@mr_serg77

Java, как скруглить изображение?

Собственно для себя пилю удобную тулзу для обработки изображений, наткнулся на то, что никак не могу найти метод или даже класс, коим можно скруглить изображение.

Допустим у меня есть квадрат 500х500 px.
На выходе хочу получить ту же картинку но со скругленными углами,
скажем, по 50px (скругления прозрачны) и полностью круглую (скругления так же прозрачны).
Изображение лежит в BufferedImage.
Копал в сторону Graphics2D, но не нашел ничего подобного.
Разве-что рисовать просто фигуру типа:
graphics2D.setColor(new Color(1f,1f,1f,1f ));
graphics2D.setBackground(new Color(1f,0f,0f,0f ));
graphics2D.fill(new RoundRectangle2D.Double(0, 0, 500, 500, 500, 500));


Или рисовать изображение, но не задать форму:
graphics2D.drawImage(img, 0, 0, 500, 500, null);

Подскажите в какую сторону копать? Может либа стороняя есть на это, если в jdk нет подобного?
  • Вопрос задан
  • 1050 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@mr_serg77 Автор вопроса
В общем разобрался сам, на скорую руку решение вот, оптимизировать есть что.
Решение для потомков, может кому пригодиться:

private BufferedImage addCorners(BufferedImage tempImg, int cornerRadius){
        BufferedImage tempImgRounded = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
        Graphics2D graphics2D = tempImgRounded.createGraphics();
        graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        //graphics2D.setColor(new Color(1f,0f,0f,0f ));
        graphics2D.fill(new RoundRectangle2D.Float(0, 0, 500, 500, cornerRadius, cornerRadius));
        graphics2D.setComposite(AlphaComposite.SrcAtop);
        graphics2D.drawImage(img, 0, 0, null);
        return tempImgRounded;
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 дек. 2024, в 08:00
20000 руб./за проект
25 дек. 2024, в 07:53
20000 руб./за проект
25 дек. 2024, в 07:45
20000 руб./за проект