Maison > Java > javaDidacticiel > Pourquoi le redimensionnement de mon image Java entraîne-t-il une mauvaise qualité et comment puis-je l'améliorer ?

Pourquoi le redimensionnement de mon image Java entraîne-t-il une mauvaise qualité et comment puis-je l'améliorer ?

Patricia Arquette
Libérer: 2024-12-17 08:18:25
original
610 Les gens l'ont consulté

Why Does My Java Image Resize Result in Low Quality, and How Can I Improve It?

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.

  1. Redimensionnez l'image à une taille intermédiaire (par exemple, 150x150).
  2. Redimensionnez l'image intermédiaire à la taille finale (par exemple, 60x60).

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;
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal