Maison > Java > javaDidacticiel > Comment mettre à l'échelle correctement une image tamponnée en Java : rééchantillonnage ou recadrage ?

Comment mettre à l'échelle correctement une image tamponnée en Java : rééchantillonnage ou recadrage ?

Linda Hamilton
Libérer: 2024-11-21 07:45:12
original
491 Les gens l'ont consulté

How to Properly Scale a BufferedImage in Java: Resampling vs. Cropping?

Mise à l'échelle d'une BufferedImage : se plonger dans le rééchantillonnage, pas dans le recadrage

Votre tentative de mise à l'échelle d'une BufferedImage à l'aide de la classe Graphics2D peut ne pas donner les résultats souhaités en raison des limites imposées par la méthode. La méthode scale() transforme simplement le contexte graphique actuel sans modifier les données d'image sous-jacentes.

AffineTransformOp : la solution préférée pour le rééchantillonnage

Pour le rééchantillonnage, la classe AffineTransformOp fournit une plus grande flexibilité en vous permettant de spécifier le type d'interpolation. L'interpolation détermine la manière dont les valeurs de pixels intermédiaires sont calculées lorsque l'image est mise à l'échelle. Voici un exemple utilisant AffineTransformOp pour mettre à l'échelle une image :

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

Dans cet exemple :

  • AffineTransform est utilisé pour définir la transformation de mise à l'échelle.
  • AffineTransformOp est utilisé avec le type d'interpolation TYPE_BILINEAR, qui fournit des résultats fluides et de haute qualité résultats.
  • filter() applique la transformation et rééchantillonne l'image dans l'après BufferedImage.

Points clés

  • Utiliser AffineTransformOp pour rééchantillonner les images, pas pour les recadrer.
  • Choisissez le type d'interpolation approprié pour des résultats optimaux, tels que TYPE_BILINEAR.
  • Référez-vous aux ressources connexes pour des exemples supplémentaires et des informations sur la mise à l'échelle des images.

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