Frage

Wir verwenden JAI (https://jai-imageio.dev.java.net/), um Bilder in Java zu skalieren und zuzuschneiden.Wir möchten auf unseren Bildern runde Ecken erzeugen.Wie machen wir das?

Die Bilder sind JPG und PNG.Ich denke, dass es einfacher ist, dies mit JPGs zu tun?

Das Bild ist ein PlanarImage von JAI

PlanarImage src = JAI.create(...,...);

welches in ein java.awt.Graphics-Objekt umgewandelt werden kann

Hat das schon mal jemand gemacht?

War es hilfreich?

Lösung

PNG unterstützt einen transparenten Alphakanal, JPG jedoch nicht.Für JPG müssten Sie also auch eine Farbe auswählen, um den „unsichtbaren“ Teil des Rechtecks ​​für die abgerundeten Ecken zu malen.

Es gibt eine Klasse java.awt.geom.RoundRectangle2D stehen hierfür zur Verfügung:

public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    RoundRectangle2D rr = new RoundRectangle2D.Float(50, 50, 200, 100, 10, 10);
    g2d.draw(rr);
}

Die Float()-Methode der Klasse RoundRectangle2D benötigt sechs Argumente:

  • Die ersten beiden stellen die Position der oberen linken Ecke dar.
  • Die Argumente 3 und 4 stellen die Breite und Höhe des abgerundeten Rechtecks ​​dar.
  • Die letzten beiden Argumente repräsentieren die Breite und Höhe des in den Ecken gezogenen Bogens.

Zeichnen Sie also ein abgerundetes Rechteck, das genau das Bild enthält, dessen Ecken abgerundet sein sollen, und überlagern Sie es dann oder verwenden Sie eine Maske, um den gewünschten Effekt zu erzielen.

Andere Tipps

Was hindert Sie daran, zeichnen, was Ecken Sie auf die Grafik aus dem Bild erhalten Objekt? Ich bin nicht wirklich sicher, was Ihre „runden Ecken“ sollen aussehen, aber Sie können alle zumutbaren Farbe Operationen an den Graphics-Objekt durchführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top