Java Vergrößerte & verpixelte Bilder mit Anti-Alias-Rand versehen

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,

ich habe folgendes Problem:
Zu Anfang ist ein kleines Bild gegeben, das den Rand einer Form darstellt (siehe Anhang; diese Form kann variieren und muss nicht immer wie eine Grundform aussehen; sie kann auch z.B. nierenförmig aussehen oder herzförmig oder, oder, oder). Nun wird dieses Bild nach Nutzereingaben vergrößert z.B. auf das 4-Fache. Dann ist das Resultat ein eher verpixeltes Bild wie Schritt 2 im Anhang. Nun möchte ich anstatt diesem verpixelten Rand einen sauberen Anti-Alias-Rand darüber zeichnen (wie in Schritt 3 in grün eingezeichnet). Wie kann ich das mit Java und Graphics2D/BufferedImage anstellen?

Ich freue mich über Denkanstöße und Hilfestellungen,
CPU :(
 

Anhänge

  • oval.png
    oval.png
    37,2 KB · Aufrufe: 203
Wenn die Bilder immer Mathematischen Formen folgen, würde ich einfach die vergrößerte Version neu zeichnen lassen. Sonst wird es komplizierter. Wenn es immer SW-Bilder sind, dann könnte man über ein Algo die Kanten rausglätten z.B.
Code:
für jedes Pixel
Wenn von 2 Seiten schwarz (also 5 Pixel) und Pixel selber weiß -> schwarz
Bsp:
###
#x
#
x ist der Pixel, die # sind schwarze Pixel.

so würde ich es machen, würde halt zu einem tendenziell etwas größeren Ring führen. (Umgekehrt auch möglich->kleinerer Ring)
 
Hiho,

versuchs mal damit:

Code:
	protected void paintComponent(Graphics g) {
		Graphics2D g2 = (Graphics2D)g;
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
							RenderingHints.VALUE_ANTIALIAS_ON);
		g2.setComposite(AlphaComposite.SrcAtop);
	}


Greetings
 
Zurück
Oben