Закругление углов на изображениях с использованием Java и JAI

StackOverflow https://stackoverflow.com/questions/1826665

Вопрос

Мы используем ДЖАЙ (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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top