Transparentes Image drehen, Transparenz beibehalten

jeipack

Erfahrenes Mitglied
Hi

Ich würde gerne ein Image (Gif mit Transparenz) laden und es dann in 6° abschnitten drehen und jeweils ein neues Image-Objekt erstellen.
Wenn ich das Bild nicht drehe bleibt die Transparenz erhalten. Wenn es aber gedreht wurde ist die Transparenz weg.
Gibt es eine Möglichkeit die Transparenz nicht zu verlieren?

Hier mal ein Ausschnitt aus dem Code:
Java:
BufferedImage sourceImage = ImageIO.read(url);
		
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
Image image = gc.createCompatibleImage(sourceImage.getWidth(),sourceImage.getHeight(),Transparency.BITMASK);
		
// so habe ich die Transparenz
image.getGraphics().drawImage(sourceImage,0,0,null);
		
//so nicht (siehe Funktion zum drehen)
image.getGraphics().drawImage(rotateImage(sourceImage, 6),0,0,null);


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;
}


Und so sieht es dann aus :( Überlappende Bilder

Gruss
jeipack
 
Da muss wo anderst der Fehler sein, ich verwende exact die selbe Methode, und bei mir bleibt das Bild transparent.

OK, doch nicht:
Java:
BufferedImage rotatedImage =
			new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_INT_ARGB);
Du solltest ihm sagen, dass das Bild transparent sein muss: ARGB.
 
Zuletzt bearbeitet:
Perfekt Danke :)
Hab gar nie darauf geachtet, da das sourceImage ja eigentlich schon transparent ist und ich den Typ von diesem übernehme.
 

Neue Beiträge

Zurück