# Wie mache ich den Hintergrund einer Image durchsichtig?



## JRegier (12. Apr 2005)

Ich möchte ein Image auf Hintergünde mit verschiedenste Farben setzen. 
Wie mache ich das nur der Umriss einer Image zu sehen ist.  Also mein Image hatt
einen Weißen Hintergrund. Ich möchte das der Weiße Hintergrund nicht angezeigt wird, 
sondern der Hintergrund auf welchen ich den Image setze.


----------



## dotlens (12. Apr 2005)

du musst das bild, welches du in das Image lädst transparent machen. das heisst kein JPG sondern irgend ein filetyp, der mehrere schichten unterstützt.
100% sicher bin ich mir aber nicht


----------



## JRegier (12. Apr 2005)

dotlens hat gesagt.:
			
		

> du musst das bild, welches du in das Image lädst transparent machen. das heisst kein JPG sondern irgend ein filetyp, der mehrere schichten unterstützt.
> 100% sicher bin ich mir aber nicht



Und wie mach ich das Transparent? Transparency vieleicht?


----------



## meez (12. Apr 2005)

z.B. gif oder png


----------



## JRegier (12. Apr 2005)

meez hat gesagt.:
			
		

> z.B. gif oder png



Unterstüzt den Java PNG Grafik-Format?

Aber wie ich auch die GIF und PNG Formate 
Hintergrund durchsichtig mache weiß ich ja nicht.

Kann mir das einer sagen?


----------



## meez (12. Apr 2005)

JRegier hat gesagt.:
			
		

> Unterstüzt den Java PNG Grafik-Format?


Die neueren Versionen wahrscheinlich schon...


			
				JRegier hat gesagt.:
			
		

> Aber wie ich auch die GIF und PNG Formate
> Hintergrund durchsichtig mache weiß ich ja nicht.


Du sagst in deinem Grafikprogram: Mache Hintergrund durchsichtig (Transparent)...


----------



## Stefan1200 (12. Apr 2005)

meez hat gesagt.:
			
		

> JRegier hat gesagt.:
> 
> 
> 
> ...



Seit Java 1.4.1 nutze ich schon erfolgreich transparente PNG Bilder, denke das Java das auf jedenfall schon seit 1.3 kann.


----------



## Spacerat (12. Apr 2005)

Das ist nicht ganz einfach. Zunächst ist es völlig egal, welches Bildformat verwendet wird. Entscheidend ist, das man das geladene Image in ein BufferedImage zeichnet und als Modus einen von BITMASK (für GIF und PNG), TRANSCULENT, OPAQUE oder ein RGBA-Format wählt.


```
BufferedImage create(Image source)
{
	BufferedImage rc = null;
	try {
		Container temp = new Container();
		MediaTracker mt = new MediaTracker(temp);
		mt.addImage(source, 0);
		mt.waitForAll();
		int w = source.getWidth(temp);
		int h = source.getHeight(temp);
		rc = new BufferedImage(w, h, BufferedImage.<MODE>);
		rc.getGraphics().drawImage(source, 0, 0, temp);
	} catch (Exception e) {}
	return rc;
}
```

Ein per rc.getData() erzeugtes Raster kann nun mit einigen vielen Befehlen auf Transparenz getrimmt werden, indem man (im zweifelsfalle jeden) Punkte neue "Farbwerte" gibt. dazu verwendet man das 4. Float der Color() Klasse. Während die ersten 3 Floats für die Farbe selbst verantwortlich sind (sollten mit Weiss ge-X-OR't werden) ist das 4. für den Alpha-Kanal verantwortlich. Hier kann man die Punktfarbe mit 0 durchsichtig und mit 1 undurchsichtig machen. Ne' einfache Routine hab' ich dafür leider nicht, da ich mich selbst gerade mit Transparenzen befasse. Zur Krönung dieser Exkursion möchte ich endlich ein tranzparentes Applet erschaffen (ok ok ok ...hinbekommen wäre evtl. das bessere wort).

cu Spacerat


----------

