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);
Dans cet exemple :
Points clés
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!