Guten Abend,
Java mag mich nicht! Ich hab versucht ein Bild zu skalieren von
417x313px auf 150x113px zu skalieren. Ich hab es so gemacht:
1 | BufferedImage newImg = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);
|
2 |
|
3 | Graphics2D g = newImg.createGraphics();
|
4 | g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
5 | g.setRenderingHint(RenderingHints.KEY_DITHERING , RenderingHints.VALUE_DITHER_ENABLE);
|
6 | g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
|
7 | g.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
|
8 | g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
|
9 | g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
|
10 |
|
11 | g.drawImage(img, 0, 0, newWidth, newHeight, 0, 0, oldW, oldH, null);
|
Das Problem ist, das Bild wird scheinbar beim Verkleinern nicht
interpoliert. Das eine Bild zeigt, was mit Java rauskommt, das Andere
von Gimp mit bikubischer Interpolation. Sogar mit bilinearer
Interpolation siehts unter Gimp noch besser aus.
Weiß jemand, was ich da falsch mache?
Ich denke, ich verwende momentan die OpenJDK6 Java Runtime.
Viele Grüße,
Manfred