Skalieren eines gepufferten Bildes: Eine umfassende Anleitung
Problemstellung
Ein Versuch der Skalierung Beim Erstellen eines BufferedImage mithilfe der Java-API stieß ein Entwickler mit dem folgenden Code auf ein erfolgloses Ergebnis:
BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded); Graphics2D grph = image.createGraphics(); grph.scale(2.0, 2.0); grph.dispose();
Lösung
Während das Konzept der Skalierung eines BufferedImage mithilfe von Graphics2D. Obwohl die Funktion „scale()“ unkompliziert erscheint, ist es wichtig zu beachten, dass dieser Vorgang keine Auswirkungen auf die zugrunde liegenden Bilddaten hat. Um eine echte Skalierung zu erreichen, ist es notwendig, die Klasse AffineTransformOp zu verwenden, die erweiterte Flexibilität und Interpolationsoptionen bietet.
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);
Weitere Überlegungen
Der vorgestellte Codeausschnitt veranschaulicht dies Resampling, eine Technik, die ein neues Bild mit der gewünschten Größe erstellt und dabei das ursprüngliche Seitenverhältnis des Originalbilds beibehält. Im Gegensatz dazu wird das Zuschneiden, das sowohl die Größe als auch das Seitenverhältnis verändert, in einem separaten Thread behandelt. Darüber hinaus stehen verschiedene Beispiele verwandter Konzepte zur weiteren Erkundung zur Verfügung.
Das obige ist der detaillierte Inhalt vonWie kann ich ein BufferedImage in Java richtig skalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!