Comment mettre à l'échelle efficacement une image tamponnée
Question :
Dans le code suivant, un la tentative de mise à l'échelle d'une BufferedImage à l'aide de Graphics2D.scale() échoue. Quelle pourrait en être la raison ?
BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded); Graphics2D grph = image.createGraphics(); grph.scale(2.0, 2.0); grph.dispose();
Réponse :
La méthode Graphics2D.scale() applique simplement une transformation de mise à l'échelle au contexte graphique actuel sans réellement modifier BufferedImage. Pour redimensionner l'image elle-même, une approche différente doit être adoptée.
Solution utilisant AffineTransformOp :
Une façon de mettre à l'échelle efficacement une BufferedImage consiste à utiliser un AffineTransformOp. Cela permet un meilleur contrôle sur le processus de mise à l'échelle, y compris le type d'interpolation. Voici un exemple :
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 ce code :
Remarque :
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!