# Transparente Farbe von (Buffered) Image



## Ryuuken (7. Jun 2007)

jau also
ich habe ein Image oder BufferedImage, wobei letzteres warscheinlich bevorzugt wäre, und ich habe zb ein JPG ode BMP das ich lade und möchte dort eine gewisse Farbe transparent darstellen, meist dieses violett #FF00FF.

Hab schon über RGB und Color FIlter gelesen und so aber ich habe keine vorstellung wie das konkret aussehen soll.

Kann mir mal einer ein Beispiel geben ?


----------



## Wildcard (7. Jun 2007)

Wenn das in deinem Fall möglich ist, wäre es einfacher dafür ein Grafikprogramm zu verwenden und die Bilder direkt richtig abzuspeichern.


----------



## Ryuuken (7. Jun 2007)

das geht schon, habe ich auch bisher gemacht... png und gif

jedoch rotiere ich die bilder in meinem neuen projekt, und die funktioniert nicht mit png's und bei gifs wird der hintergrund plötzlich doch wieder schwarz


----------



## Wildcard (7. Jun 2007)

Sollte eigentlich nicht. Vermutlich machst du da einen Fehler.


----------



## Ryuuken (7. Jun 2007)

kann eigentlich nicht sein

```
picu = rotateImage(pic,dt);

		g.drawImage(picu,300,100,this);
		g.drawImage(pic,500,100,this);
```

dt dort ist eine variable die sich änder, dadurch dreht sich das bild, jedoch ist der hintergrund nicht transparent.
und das pic image ist die quelle... welches aber transparent ist. D.H picu nimmt den zustand von pic... und bei pic ist es transparent... ist ein gif.

Aber vielleicht ein Fehler in meiner rotateImage Funktion.


```
private static BufferedImage rotateImage(BufferedImage src, double degrees)
    {
        AffineTransform affineTransform = AffineTransform.getRotateInstance(Math.toRadians(degrees),src.getWidth() / 2,src.getHeight() / 2);
        BufferedImage rotatedImage = new BufferedImage(src.getWidth(), src.getHeight(), src.getType());
        Graphics2D g = (Graphics2D) rotatedImage.getGraphics();
        g.setTransform(affineTransform);
        g.drawImage(src, 0, 0, null);
        return rotatedImage;
    }
```


----------



## Guest (7. Jun 2007)




----------



## Ryuuken (7. Jun 2007)

vergessen Namen einzugeben


----------



## Wildcard (7. Jun 2007)

Hier wird wohl der transparente Teil beim Zeichnen ausgelassen, dadurch hat das neue Bild wohl einen schwarzem Hintergrund.
Instanzier das neue Image mal explizit mit zb. ARGB


----------



## Ryuuken (7. Jun 2007)

ehm , hm

ARGB = Alpha Red Green Blue
kla

aber wie damit instanzieren ?_?


----------



## Wildcard (7. Jun 2007)

Den richtigen Type in den Konstruktor
http://java.sun.com/javase/6/docs/api/java/awt/image/BufferedImage.html#BufferedImage(int, int, int)


----------



## Ryuuken (7. Jun 2007)

ja, das hats gebracht =D

BufferedImage rotatedImage = new BufferedImage(src.getWidth(), src.getHeight(),BufferedImage.TYPE_INT_ARGB);

Jetzt gehts. Danke


----------

