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

Warum skaliert Graphics2D ein gepuffertes Bild nicht effektiv neu?

Barbara Streisand
Barbara StreisandOriginal
2024-11-24 06:55:16703Durchsuche

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();

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);

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!

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