Heim > Java > javaLernprogramm > Warum skaliert Graphics2D ein gepuffertes Bild nicht effektiv neu?

Warum skaliert Graphics2D ein gepuffertes Bild nicht effektiv neu?

Barbara Streisand
Freigeben: 2024-11-24 06:55:16
Original
737 Leute haben es durchsucht

Why Doesn't Graphics2D Effectively Rescale a BufferedImage?

Neuskalieren eines BufferedImage

Frage:

Trotz Einhaltung der JavaDocs haben sich Versuche, ein BufferedImage mithilfe von Graphics2D zu skalieren, bewährt zwecklos. Der folgende Code wird verwendet:

BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded);
Graphics2D grph = image.createGraphics();
grph.scale(2.0, 2.0);
grph.dispose();
Nach dem Login kopieren

Antwort:

Das Problem kann durch die alleinige Verwendung von Graphics2D entstehen, das nur die Darstellung auf dem Bildschirm skaliert, ohne die tatsächliche Darstellung zu verändern Bilddaten. Für eine effektive Neuskalierung von Bildern wird AffineTransformOp empfohlen, da es zusätzliche Kontrolle über den Interpolationstyp bietet. So kann der Code mit AffineTransformOp geändert werden:

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);
Nach dem Login kopieren

Dieser Ansatz ermöglicht eine bilineare Interpolation, die reibungslose und genaue Neuskalierungsergebnisse liefert.

Das obige ist der detaillierte Inhalt vonWarum skaliert Graphics2D ein gepuffertes Bild nicht effektiv neu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage