PNG mit Transparenz darstellen

craab

Grünschnabel
Hallo,

ich habe zu dem Thema zwar schon paar Threads gefunden, aber selbst die dort beschriebenen Lösungsvorschläge funktionieren bei mir nicht.

Ich möchte ein PNG in der paint()-Methode einer Window-Klasse ausgeben. Dabei soll jedoch der Alpha-Kanal des PNG berücksichtigt werden.

Code:
Image image = getToolkit().getImage("colors/" + this.color);

BufferedImage bufferedImage = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_ARGB);
bufferedImage.createGraphics().drawImage(image, 0, 0, this);

Die Ausgabe ist einfach ein leerer (weißer) Hintergrund.
 
Du kannst dir auch die Transparenz über alpha Blending selbst berechnen

2 Bilder (oder auch screenshot)

über beide Bilder in x und y iter.
aus übereinander liegenden Pixeln RGB werte bestimmen

alpha blending (Pixel A(bild1), Pixel B(bild2))
----------------------------------------------------------------

für R,G,B berechnen

C = ?AA + (1 ? ?A)B (Wikipedia)

neues Image mit den gewonnenen Pixeln aufbauen (auch die Performance ist recht gut)
 
Zurück