68 votes

Comment redimensionner JLabel ImageIcon ?

Je crée une application Java Swing qui a la disposition suivante ( MigLayout ):

 [icon][icon][icon][....]
where icon = jlabel and the user can add more icons

Lorsque l'utilisateur ajoute ou supprime des icônes, les autres doivent diminuer ou augmenter.

Ma question est vraiment simple : j'ai un JLabel qui contient un ImageIcon ; comment puis-je redimensionner cette icône ?

120voto

trolologuy Points 1552

Essaye ça :

 ImageIcon imageIcon = new ImageIcon("./img/imageName.png"); // load the image to a imageIcon
Image image = imageIcon.getImage(); // transform it 
Image newimg = image.getScaledInstance(120, 120,  java.awt.Image.SCALE_SMOOTH); // scale it the smooth way  
imageIcon = new ImageIcon(newimg);  // transform it back

(trouvé ici )

79voto

Suken Shah Points 1178

Le redimensionnement de l'icône n'est pas simple. Vous devez utiliser les graphiques 2D de Java pour redimensionner l'image. Le premier paramètre est une classe Image que vous pouvez facilement obtenir à partir de la classe ImageIcon . Vous pouvez utiliser la ImageIcon pour charger votre fichier image, puis appeler simplement la méthode getter pour obtenir l'image.

 private Image getScaledImage(Image srcImg, int w, int h){
    BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = resizedImg.createGraphics();

    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g2.drawImage(srcImg, 0, 0, w, h, null);
    g2.dispose();

    return resizedImg;
}

42voto

tirz Points 1507

Et qu'en est-il ? :

 ImageIcon imageIcon = new ImageIcon(new ImageIcon("icon.png").getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT));
label.setIcon(imageIcon);

De : redimensionner une image pour l'adapter à un JLabel

10voto

Kyle Phillips Points 91

Cela gardera le bon rapport hauteur/largeur.

     public ImageIcon scaleImage(ImageIcon icon, int w, int h)
    {
        int nw = icon.getIconWidth();
        int nh = icon.getIconHeight();

        if(icon.getIconWidth() > w)
        {
          nw = w;
          nh = (nw * icon.getIconHeight()) / icon.getIconWidth();
        }

        if(nh > h)
        {
          nh = h;
          nw = (icon.getIconWidth() * nh) / icon.getIconHeight();
        }

        return new ImageIcon(icon.getImage().getScaledInstance(nw, nh, Image.SCALE_DEFAULT));
    }

5voto

Andrew Thompson Points 108505

Une façon (rapide et sale) de redimensionner les images pour utiliser HTML et spécifier la nouvelle taille dans l'élément image. Cela fonctionne même pour les images animées avec transparence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X