Закругление углов на изображениях с использованием Java и JAI
-
22-07-2019 - |
Вопрос
Мы используем ДЖАЙ (https://jai-imageio.dev.java.net/) для масштабирования и обрезки изображений на Java.Мы хотели бы создать закругленные углы на наших изображениях.Как нам это сделать?
Изображения представлены в формате JPG и PNG.Я бы подумал, что проще сделать это с JPGS?
Изображение представляет собой плоскостное изображение от JAI
PlanarImage src = JAI.create(...,...);
который может быть преобразован в объект java.awt.Graphics
Кто-нибудь делал это раньше?
Решение
PNG поддерживает прозрачный альфа-канал, а JPG - нет.Итак, для JPG вам также нужно будет выбрать цвет, чтобы закрасить "невидимую" часть прямоугольника для закругленных углов.
Есть такой класс java.awt.geom.RoundRectangle2D
доступно для этого:
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
RoundRectangle2D rr = new RoundRectangle2D.Float(50, 50, 200, 100, 10, 10);
g2d.draw(rr);
}
Метод Float() класса RoundRectangle2D принимает шесть аргументов:
- Первые два обозначают расположение верхнего левого угла.
- Аргументы 3 и 4 представляют ширину и высоту скругленного прямоугольника.
- Последние два параметра представляют ширину и высоту дуги, нарисованной в углах .
Итак, нарисуйте закругленный прямоугольник, который будет содержать только то изображение, углы которого вы хотите сделать закругленными, а затем либо наложите, либо используйте маску для получения желаемого эффекта.
Другие советы
Что мешает вам рисовать любые углы, которые вам нравятся, на объекте Graphics, полученном из изображения? Я не совсем уверен, какие у вас "круглые углы" должны выглядеть, но вы можете выполнить все разумные операции рисования на объекте Graphics. Р>