Question :
Malgré le respect des JavaDocs, les tentatives de mise à l'échelle d'une image tamponnée à l'aide de Graphics2D se sont avérées futile. Le code suivant est utilisé :
BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded); Graphics2D grph = image.createGraphics(); grph.scale(2.0, 2.0); grph.dispose();
Réponse :
Le problème peut provenir de l'utilisation de Graphics2D seul, qui met uniquement à l'échelle le rendu à l'écran sans altérer le rendu réel. données d'images. Pour un redimensionnement efficace des images, AffineTransformOp est recommandé, car il offre un contrôle supplémentaire sur le type d'interpolation. Voici comment le code peut être modifié à l'aide d'AffineTransformOp :
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);
Cette approche permet une interpolation bilinéaire, qui produit des résultats de redimensionnement fluides et précis.
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!