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:
Wichtige Punkte
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!