Maison > Java > javaDidacticiel > le corps du texte

Comment puis-je mettre à l'échelle correctement une image tamponnée en Java ?

Susan Sarandon
Libérer: 2024-11-20 17:02:16
original
323 Les gens l'ont consulté

How Can I Properly Scale a BufferedImage in Java?

Mise à l'échelle d'une image tamponnée : un guide complet

Énoncé du problème

Dans une tentative de mise à l'échelle une BufferedImage utilisant l'API Java, un développeur a rencontré un résultat infructueux avec le code suivant :

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

Solution

Alors que le concept de mise à l'échelle d'une BufferedImage à l'aide de Graphics2D. scale() peut paraître simple, il est essentiel de noter que cette opération n'affecte pas réellement les données d'image sous-jacentes. Pour obtenir une véritable mise à l'échelle, il est nécessaire d'utiliser la classe AffineTransformOp, qui offre une flexibilité et des options d'interpolation améliorées.

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

Considérations supplémentaires

L'extrait de code présenté illustre le rééchantillonnage, une technique qui crée une nouvelle image avec la taille souhaitée tout en conservant le rapport hauteur/largeur d'origine de l'image d'origine. En revanche, le recadrage, qui modifie à la fois la taille et le rapport hauteur/largeur, est abordé dans un fil de discussion séparé. De plus, divers exemples de concepts connexes sont disponibles pour une exploration plus approfondie.

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