Maison > Java > javaDidacticiel > Pourquoi Graphics2D ne redimensionne-t-il pas efficacement une image tamponnée ?

Pourquoi Graphics2D ne redimensionne-t-il pas efficacement une image tamponnée ?

Barbara Streisand
Libérer: 2024-11-24 06:55:16
original
680 Les gens l'ont consulté

Why Doesn't Graphics2D Effectively Rescale a BufferedImage?

Redimensionnement d'une image tamponnée

Question :

Malgré le respect des JavaDocs, les tentatives de mise à l'échelle d'une image tamponnée à l'aide de Graphics2D se sont avérées futile. Le code suivant est utilisé :

BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded);
Graphics2D grph = image.createGraphics();
grph.scale(2.0, 2.0);
grph.dispose();
Copier après la connexion

Réponse :

Le problème peut provenir de l'utilisation de Graphics2D seul, qui met uniquement à l'échelle le rendu à l'écran sans altérer le rendu réel. données d'images. Pour un redimensionnement efficace des images, AffineTransformOp est recommandé, car il offre un contrôle supplémentaire sur le type d'interpolation. Voici comment le code peut être modifié à l'aide d'AffineTransformOp :

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);
Copier après la connexion

Cette approche permet une interpolation bilinéaire, qui produit des résultats de redimensionnement fluides et précis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal