Faible qualité d'image après redimensionnement en Java
Le problème se pose lors du redimensionnement d'une image d'une grande taille (par exemple, 300 x 300) à une taille significative taille plus petite (par exemple 60x60) en une seule étape. Cela conduit inévitablement à une dégradation de la qualité.
Méthode Diviser pour régner pour le redimensionnement
Pour atténuer ce problème, il est recommandé d'utiliser une approche diviser pour régner.
Exemple d'implémentation
Voici un code Java extrait qui implémente le diviser pour mieux régner méthode :
public class ImageResizer { public BufferedImage resize(BufferedImage original, Dimension finalSize) { // Get intermediate size. Dimension intermediateSize = new Dimension(original.getWidth() / 2, original.getHeight() / 2); // Resize to intermediate size. BufferedImage intermediateImage = resize(original, intermediateSize); // Resize to final size. BufferedImage resizedImage = resize(intermediateImage, finalSize); // Return the resized image. return resizedImage; } private BufferedImage resize(BufferedImage image, Dimension size) { BufferedImage scaledImage = new BufferedImage(size.width, size.height, image.getType()); Graphics2D graphics = scaledImage.createGraphics(); // Set rendering hints for better quality. graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // Draw the original image scaled to the new size. graphics.drawImage(image, 0, 0, size.width, size.height, null); // Dispose of the graphics object. graphics.dispose(); // Return the scaled image. return scaledImage; } }
En utilisant cette méthode, vous pouvez obtenir une qualité d'image considérablement améliorée après le redimensionnement.
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!