Bildinformationen ändern (Pixel)

javaprogger1987

Erfahrenes Mitglied
Hi,
ich hab folgendes Problem. Für ein Spiel habe ich Bilder von Figuren, wobei jede Figur aus 6-7 einzelnen Teilen besteht, die man übereinanderzeichnet, damit man die fertige Figur sieht (mit entsprechenden transparenten Gifs).
Nun ist das aber ein ziemlicher Performancefresser, deshalb wollte ich beim Start die Bilder in ein Bild zusammenkopieren, um dann nur noch eins zeichnen zu müssen.
Hab ich mir folgendermaßen überlegt:
Ein leeres Bild erstellen (BufferedImage)
Das nächste Bild nehmen, und nur die Pixel die nicht transparent sind in das leere Bild zeichnen..

So nun kann ich zwar schon mit dem PixelGrabber die Transparenz (Alpha = 0) auslesen, aber weiß nicht wie ich nun einen Pixel in einem Buffered (notfalls auch anderem) Image ändern kann.. Weiß da jemand was
Vielen Dank schonmal!
 
Moin,

Man kann sich bei einem BufferedImage mit getData ein WritableRaster holen und auf dieses "zeichnen" .. Mit setData werden die Daten dann gesetzt..

Gruß Stefan
 
Cool danke schonmal..
Aber du meinst img.getRaster() oder? getData liefert nur ein nicht beschreibbares Raster...
Und dann vermutlich diese Mehtode
img.getRaster().setPixel();

public void setPixel(int x,
int y,
int[] iArray)

Was muss denn dann in dem Array drinstehen? Die RGB und Alpha werte?
 
Zuletzt bearbeitet:
Hallo!

Wenn du das BufferedImage "von Hand" erzeugt hast
( BufferedImage img = new BufferedImage(h,w,BufferedImage.TYPE_INT_ARGB) )
Dann kannst du dir mit img.getGraphics() einen Graphic Kontext besorgen über den du ins BIld zeichnen kannst.

Gruß Tom
 
Zurück