BufferedImage auf ein anderes BufferedImage zeichnen

Luk10

Top Contributor
Grüße,

Ich habe 2 BufferedImages. Beide beinhalten eine .png gleich Maße, jedoch mit unterschiedlicher Verteilung an farbigen und transparenten Pixeln.

Nun möchte ich beide Images aufeinander zeichnen um somit ein BufferedImage zu erhalten, dass beide anderen - aufeinanderliegend - enthält. Dabei sollen die transparenten Pixel farbige Pixel durchscheinen lassen. D.h. wenn ein transparentes Pixel auf einem farbigen liegt, soll am Ende das farbige Pixel zu sehen sein.

Kann mir jemand
a) sagen wie man BufferedImages aufeinander zeichnet und
b) ob es zu einem Problem mit den transparenten Pixeln kommt und wenn ja wie man es löst

Danke,
-Luk10-
 
Zeichne erst das eine BufferedImage und dann das andere in ein neues BufferedImage.
Dabei reicht es, wenn du nur beom zweiten die transparenten Pixel berücksichtigst.

Gruß Vanny
 
Tut mir Leid aber das hilft mir sehr wenig weiter ...

Wie "zeichne" ich das eine bzw das andere, um ein einziges neues BufferedImage zu bekommen
Wie "berücksichtige" ich die transparenten Pixel beim zweiten Image?

Danke,
-Luk10-
 
Ohne drüber nachzudenken wäre mein erster Ansatz das:

Java:
		BufferedImage srcA = new BufferedImage(1280, 1024, BufferedImage.TYPE_INT_ARGB);
		BufferedImage srcB = new BufferedImage(1280, 1024, BufferedImage.TYPE_INT_ARGB);
		BufferedImage dest = new BufferedImage(1280, 1024, BufferedImage.TYPE_INT_ARGB);
		
		Graphics2D destG2d = dest.createGraphics();
		destG2d.drawImage(srcA, 0, 0, null);
		destG2d.drawImage(srcB, 0, 0, null);
		
		// auf dest wurde nun srcA und dann srcB gezeichnet

Wie das mit der Transparenz zusammenspielt, das sieht man, wenn man es ausführt 😉
 
[JAVA=6]destG2d.drawImage(srcA, 0, 0, null);[/code]

In der API finde ich die Methode
Code:
drawImage(BufferedImage, int, int , ?)
nicht ....
Nur: Graphics2D (Java Platform SE 6)

Ich verstehe nicht ganz was die mit einem Objekt einer Klasse die diese Interface "BufferedImageOp" wollen? Was soll da gefiltert werden und kann man das vernachlässigen (null übergeben)?

Werde mich gleich dranmachen das kurz zu testen.

Danke,
-Luk10-
 
Die erbt Graphics2D von Graphics.
Probiere sie doch einfach aus, anstatt erst meinen Code anhand der API überprüfen zu wollen xD
Eclipse verweist dann auch auf die richtige Javadoc
 

Zurück
Oben