Heim >Java >javaLernprogramm >Wie skaliert man ein gepuffertes Bild in Java richtig: Resampling vs. Zuschneiden?

Wie skaliert man ein gepuffertes Bild in Java richtig: Resampling vs. Zuschneiden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-21 07:45:12516Durchsuche

How to Properly Scale a BufferedImage in Java: Resampling vs. Cropping?

Skalieren eines BufferedImage: Eintauchen in Resampling, nicht in Zuschneiden

Ihr Versuch, ein BufferedImage mithilfe der Graphics2D-Klasse zu skalieren, führt möglicherweise nicht zu den gewünschten Ergebnissen aufgrund der durch die Methode auferlegten Einschränkungen. Die Scale()-Methode transformiert einfach den aktuellen Grafikkontext, ohne die zugrunde liegenden Bilddaten zu ändern.

AffineTransformOp: Die bevorzugte Lösung für Resampling

Für Resampling sorgt die Klasse AffineTransformOp größere Flexibilität durch die Möglichkeit, den Interpolationstyp festzulegen. Die Interpolation bestimmt, wie Zwischenpixelwerte berechnet werden, wenn das Bild skaliert wird. Hier ist ein Beispiel für die Verwendung von AffineTransformOp zum Skalieren eines Bildes:

BufferedImage before = getBufferedImage(encoded);
int w = before.getWidth();
int h = before.getHeight();
BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
AffineTransform at = new AffineTransform();
at.scale(2.0, 2.0);
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(before, after);

In diesem Beispiel:

  • AffineTransform wird zum Definieren der Skalierungstransformation verwendet.
  • AffineTransformOp wird verwendet mit dem Interpolationstyp TYPE_BILINEAR, der eine reibungslose und qualitativ hochwertige Verarbeitung ermöglicht Ergebnisse.
  • filter() wendet die Transformation an und tastet das Bild erneut in das nachgepufferte Bild ab.

Wichtige Punkte

  • Verwendung AffineTransformOp zum Resampling von Bildern, nicht zum Zuschneiden.
  • Wählen Sie den entsprechenden Interpolationstyp für optimale Ergebnisse, z. B. TYPE_BILINEAR.
  • Weitere Beispiele und Einblicke in die Bildskalierung finden Sie in den entsprechenden Ressourcen.

Das obige ist der detaillierte Inhalt vonWie skaliert man ein gepuffertes Bild in Java richtig: Resampling vs. Zuschneiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn