Bestimmte Pixel transparent erscheinen lassen

Hallo zusammen!
Ich versuche mich seit einiger Zeit in einem kleinen Aufbauspiel.
Dazu benutze ich Bilddateien, die im Hintergrund transparent sind. Da ich aber die Ressourcen nicht selber mache, ist der Hintergrund im Original Pink statt transparent. Das heißt, ich muss bei allen Bildern den Hintergrund ändern. Da das aber zu viele sind, um die einzeln zu bearbeiten, müsste ich sie entweder mit einem Programm alle "umwandeln", oder direkt mit Java alle Pixel, die Pink sind, transparent erscheinen zu lassen. Bei Delphi funktioniert das, aber als Umsteiger weiß ich nicht wie das bei Java geht. Irgendwelche Lösungsvorschläge oder Programme?

Danke schon mal im voraus! 🙂
 
Grundsätzlich geht sowas mit ColorConvertOp (Java Platform SE 6) . Die hat aber Nachteile:
- Sie "from scratch" selbst zu verwenden ... hui, ist ein bißchen tricky, weil man da mit ColorModels und ColorSpaces rumhantiert, und das immer ein bißchen kompliziert ist, also ggf. websuchen nach "ColorConvertOp example" und schauen, ob davon was passt
- Sie ist recht langsam. Richtig schnell wird das Arbeiten mit BufferedImages nur, wenn man den Typ der Images genau kennt und auf die Abstraktionen verzichtet, und direkt auf den Rohdaten arbeitet (da sollte man aber wissen, was man tut).

Sowas wie
Java:
int pink = Color.PINK.getRGB();
int transparent = 0;
for (int x=0; x<image.getWidth(); x++)
{
    for (int y=0; y<image.getHeight(); y++)
    {
        if (image.getRGB(x,y) == pink) image.setRGB(x,y,transparent);
    }
}
ist nicht das allerperformanteste, aber sehr einfach und intuitiv, und IMHO ein guter Trade-Off zwischen Performance, Abstraktion und Einfachheit
 
- Sie ist recht langsam. Richtig schnell wird das Arbeiten mit BufferedImages nur, wenn man den Typ der Images genau kennt und auf die Abstraktionen verzichtet, und direkt auf den Rohdaten arbeitet (da sollte man aber wissen, was man tut).
Naja, muss ja nur einmal beim Start konventiert werden und wird dann gespeichert.

Aber ich wusste gar nicht, dass 0 für transparent steht statt schwarz! 😀
Danke für deine schnelle Hilfe!
 
Ähm, nee irgendwie ist 0 doch schwarz und nicht transparent, bei mir wird jetzt statt Pink scharz angezeigt. Gibt es denn irgendein anderen Farbwert für transparent?
 

Zurück
Oben