Java Bild-Skalierungsproblem

Gast #1934892
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
Angehängte Dateien:
Persönliche Seite #1934988
Die Rendering Hints beziehen sich nur darauf wie Java Grafikobjekte 
zeichnet/Rendert... (z.B. Linien, Kreise etc., zumal es nur Hinweise 
sind das zu nutzen, ob das unterliegende Graphicsdevice das versteht ist 
nochmal eine andere Geschichte).
Entweder man macht es über eine "ScaledInstance" oder man setzt den 
Scalefactor bevor man das Bild 1:1 zeichnet weiß aber gerade auch nicht 
ob dann das Ergebnis besser wird. Für Bilder ist die Methode über 
ScaledInstance jedenfalls recht gut von der Qualität und Speed her.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.