Maison  >  Article  >  Java  >  Comment puis-je obtenir une mise à l'échelle flexible des images avec interpolation en Java ?

Comment puis-je obtenir une mise à l'échelle flexible des images avec interpolation en Java ?

DDD
DDDoriginal
2024-11-27 03:20:18442parcourir

How Can I Achieve Flexible Image Scaling with Interpolation in Java?

Mise à l'échelle d'une BufferedImage avec une interpolation flexible

Dans une tentative de redimensionner une BufferedImage à l'aide de l'API Java, une implémentation a eu du mal à produire le résultat souhaité . Le code a utilisé la classe Graphics2D pour appliquer une transformation de mise à l'échelle à l'image, mais a rencontré un échec.

Après avoir analysé le problème, il est devenu évident que la solution fournie n'avait pas la capacité de spécifier le type d'interpolation. AffineTransformOp offre cette flexibilité cruciale, permettant la sélection de techniques de rééchantillonnage telles que l'interpolation.

Considérez le code révisé suivant :

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

Cet extrait de code démontre l'utilisation d'AffineTransformOp pour rééchantillonner l'image à l'aide interpolation bilinéaire, produisant un résultat plus fluide et plus précis.

Il convient de noter que le à condition que le code redimensionne l’image uniformément dans les dimensions horizontales et verticales. Pour une mise à l'échelle asymétrique, un facteur de mise à l'échelle indépendant devra être spécifié pour chaque axe de l'objet AffineTransform.

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!

Déclaration:
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