# Transparenz in BufferedImage



## Zapp_Branigan (12. Jun 2008)

Ich würde gerne in einem die Farbe Weiß als Transparent definieren und das ganze als png oder auch gif speichern. BufferedImage
Wie ich generell Bilder speichern kann weiß ich, aber das mit der Transparenz ist, ist mir völlig unklar.


----------



## The_S (12. Jun 2008)

Du kannst einem Color-Objekt einen Alpha-Kanal zuweisen, welches die Transparenz eines Pixels widerspiegelt.


----------



## Zapp_Branigan (12. Jun 2008)

Hm also ich habe wirklich ein Bild mit recht großem weißen Hintergrund und den hätte ich gerne transparent.
Wenn dein Hinweiß mit dem Color-Objekt trotzdem anwendbar ist dann wäre ein Bsp. ganz toll.


----------



## Wildcard (12. Jun 2008)

Das geht grundsätzlich mit einem eigenen Colormodel, allerdings ist das wesentlich umständlicher als ein Grafikprogramm zu verwenden und einfach *dort* den Hintergrund transparent zu setzen


----------



## Zapp_Branigan (12. Jun 2008)

Das ist leider keine Option weil ich die Bilder in großer Menge erzeuge und sie direkt so sein müssen wie ich sie haben will. 

ich habe im Internet
http://info.dropnet.ch/Programmieren/Java/Galileo_Javainsel/java_140014.htm#Rxxjava_140014256Filter
gefunden aber das bekomme ich nicht zum laufen :-(
bei
Image img = createImage( imageprod ); zeigt er mir immer einen Fehler an den ich auch nicht weg bekomme...


----------



## The_S (12. Jun 2008)

Mit Colormodels habe ich noch nicht gearbeitet, ist aber definitiv die Beste Lösung! Hier kann dir Wildcard bestimmt weiterhelfen.

Ansonsten kann ich dir eine langsamere, aber genauso funktionierende, Version anbieten, die die RGB-Werte einzeln ausliest, vergleicht und dementsprechend anpasst.


----------



## Zapp_Branigan (12. Jun 2008)

Dann bitte ich Wildcard an dieser stelle mal ganz lieb darum mir ein Code-Beispiel zu posten


----------



## Wildcard (12. Jun 2008)

Angenommen du möchtest ein DirectColorModel verwenden, dann würde es vermutöich genügen, wenn du getAlpha so überschreibst (unter der Vorraussetzung, dass du Bitmaskentransparenz verwendest):


```
final public int getAlpha(int pixel) { 
     if(pixel==targetPixel)
          return 0;
     return 255;
    }
```


----------



## Zapp_Branigan (12. Jun 2008)

Hm tut mir leid aber ich kann noch nicht so gut Java was kann ich damit machen?


----------

