# BufferedImage und Antialias



## kowa (27. Aug 2008)

Hallo,

ich habe ein Programm, indem man Bilder skalieren, drehen und bewegen kann. Die Bilder sind ganz normale Fotos. Doch vorallem nachdem ein Bild gedreht wurde, bekommt es Kanten. Ich lade vorher die Bilder aus einem Ordner und speichere diese jeweils in ein BufferedImage. Dieses BufferedImages zeichne ich später in der Paint-Methode, nachdem ich mit g.rotate() das Bild gedreht habe. Obwohl ich Antialias eingeschaltet habe, erscheinen Kanten.

Der Code sieht im wesentlichen so aus:


```
public void paint(Graphics g)
{ 
  super.paintComponent(g);
  Graphics2D g2 = (Graphics2D) g;	
  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  g2.rotate(a,xRotate,yRotate);	
  g2.drawImage(image,x,y,null);	 //image ist ein BufferedImage, was mit ImageIO.read() gespeichert wurde
}
```

Das Bild wird auch noch skaliert, zb direkt beim Laden mit AffineTransformOp. Nachdem Skalieren, zeichne ich das geladene BufferedImage in ein neues BufferedImage. Auch wenn ich dort Antialias aktiviere, funktioniert es nicht. Ist das normal so bei Fotos in Java, dass Antialias nicht geht oder gibt es irgendwelche Besonderheiten, die ich beachten muss oder irgendwelche Tricks womit es doch geht?


----------



## muddin (27. Aug 2008)

Hi! 

Du musst die Render-Qualität setzen, nicht Antialiasing - das hat mit Interpolation nämlich nichts am Hut 


```
g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
```

Das dürfte dein Problem lösen.

mfg,
muddin


----------



## kowa (27. Aug 2008)

Danke, das Bild sieht schon viel besser aus und wieder was dazugelernt.


----------

