So skalieren Sie ein gepuffertes Bild effektiv
Frage:
Im folgenden Code wird ein Der Versuch, ein BufferedImage mit Graphics2D.scale() zu skalieren, ist nicht erfolgreich. Was könnte der Grund dafür sein?
BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded); Graphics2D grph = image.createGraphics(); grph.scale(2.0, 2.0); grph.dispose();
Antwort:
Die Graphics2D.scale()-Methode wendet einfach eine Skalierungstransformation auf den aktuellen Grafikkontext an, ohne tatsächlich Ändern des BufferedImage. Um die Größe des Bildes selbst zu ändern, sollte ein anderer Ansatz gewählt werden.
Lösung mit AffineTransformOp:
Eine Möglichkeit, ein BufferedImage effektiv zu skalieren, ist die Verwendung einer AffineTransformOp. Dies ermöglicht eine bessere Kontrolle über den Skalierungsprozess, einschließlich des Interpolationstyps. Hier ist ein Beispiel:
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 Code:
Hinweis:
Das obige ist der detaillierte Inhalt vonWarum ändert Graphics2D.scale() die Größe eines gepufferten Bildes nicht und wie kann ich es effektiv skalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!