Transparente Farbe von (Buffered) Image

Status
Nicht offen für weitere Antworten.
R

Ryuuken

Gast
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 ? :D
 

Wildcard

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

Ryuuken

Gast
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 :)
 
R

Ryuuken

Gast
kann eigentlich nicht sein
Code:
		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.

Code:
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;
    }
 
G

Guest

Gast
screenshot5jj9.png


:(
 

Wildcard

Top Contributor
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
 
R

Ryuuken

Gast
ehm , hm

ARGB = Alpha Red Green Blue
kla

aber wie damit instanzieren ?_?
 
R

Ryuuken

Gast
ja, das hats gebracht =D

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

Jetzt gehts. Danke :D
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben