una tamaño reducir poner imagenes imagen como centrar cargar cambiar ajustar java swing jlabel

java - tamaño - imagenes en un jlabel



Cambiar el tamaño de una imagen para adaptarse a un JLabel (8)

contorno

Aquí están los pasos a seguir.

  • Lea la imagen como un BufferedImage.
  • Cambia el tamaño de la imagen almacenada a otra imagen almacenada que sea del tamaño de JLabel.
  • Cree un ImageIcon a partir de BufferedImage redimensionado.

No es necesario establecer el tamaño preferido de JLabel. Una vez que haya escalado la imagen al tamaño que desea, JLabel tomará el tamaño del ImageIcon.

Lee la imagen como una imagen almacenada.

BufferedImage img = null; try { img = ImageIO.read(new File("strawberry.jpg")); } catch (IOException e) { e.printStackTrace(); }

Cambiar el tamaño de la imagen almacenada

Image dimg = img.getScaledInstance(label.getWidth(), label.getHeight(), Image.SCALE_SMOOTH);

Asegúrese de que el ancho y el alto de la etiqueta tengan las mismas proporciones que el ancho y el alto de la imagen original. En otras palabras, si la imagen es de 600 x 900 píxeles, la escala a 100 X 150. De lo contrario, su imagen se distorsionará.

Crear un ImageIcon

ImageIcon imageIcon = new ImageIcon(dimg);

Estoy tratando de hacer que una imagen se ajuste a una JLabel. Deseo reducir las dimensiones de la imagen a algo más apropiado para mi Swing JPanel.

Lo intenté con setPreferredSize pero no funciona.

Me pregunto si hay una manera simple de hacerlo? ¿Debo escalar la imagen para este propósito?


Asigna tu imagen a una cadena. Por ejemplo, la imagen ahora establece el icono en un tamaño fijo de labe

image.setIcon (new javax.swing.ImageIcon (image.getScaledInstance (50,50, WIDTH)));


He hecho lo siguiente y funcionó perfectamente.

try { JFileChooser jfc = new JFileChooser(); jfc.showOpenDialog(null); File f = jfc.getSelectedFile(); Image bi = ImageIO.read(f); image1.setText(""); image1.setIcon(new ImageIcon(bi.getScaledInstance(int width, int width, int width))); } catch (Exception e) { }


O puedes hacerlo de esta manera. La función u coloca las 6 líneas siguientes arrojará una excepción IOException. Y tomará su JLabel como parámetro.

BufferedImage bi=new BufferedImage(label.width(),label.height(),BufferedImage.TYPE_INT_RGB); Graphics2D g=bi.createGraphics(); Image img=ImageIO.read(new File("path of your image")); g.drawImage(img, 0, 0, label.width(), label.height(), null); g.dispose(); return bi;


Puedes probarlo:

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

O en una línea:

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

El tiempo de ejecución es mucho más rápido que File e ImageIO.

Te recomiendo comparar las dos soluciones en un bucle.


La forma mejor y más fácil para cambiar el tamaño de la imagen usando Java Swing es:

jLabel.setIcon(new ImageIcon(new javax.swing.ImageIcon(getClass().getResource("/res/image.png")).getImage().getScaledInstance(200, 50, Image.SCALE_SMOOTH)));

Para una mejor visualización, identifique el alto y ancho real de la imagen y cambie el tamaño según el porcentaje de ancho / alto


public static void main(String s[]) { BufferedImage image = null; try { image = ImageIO.read(new File("your image path")); } catch (Exception e) { e.printStackTrace(); } ImageIcon imageIcon = new ImageIcon(fitimage(image, label.getWidth(), label.getHeight())); jLabel1.setIcon(imageIcon); } private Image fitimage(Image img , int w , int h) { BufferedImage resizedimage = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB); Graphics2D g2 = resizedimage.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g2.drawImage(img, 0, 0,w,h,null); g2.dispose(); return resizedimage; }


public void selectImageAndResize(){ int returnVal = jFileChooser.showOpenDialog(this); //open jfilechooser if (returnVal == jFileChooser.APPROVE_OPTION) { //select image File file = jFileChooser.getSelectedFile(); //get the image BufferedImage bi; try { // //transforms selected file to buffer // bi=ImageIO.read(file); ImageIcon iconimage = new ImageIcon(bi); // //get image dimensions // BufferedImage bi2 = new BufferedImage(iconimage.getIconWidth(), iconimage.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics g = bi.createGraphics(); iconimage.paintIcon(null, g, 0,0); g.dispose(); // //resize image according to jlabel // BufferedImage resizedimage=resize(bi,jLabel2.getWidth(), jLabel2.getHeight()); ImageIcon resizedicon=new ImageIcon(resizedimage); jLabel2.setIcon(resizedicon); } catch (Exception ex) { System.out.println("problem accessing file"+file.getAbsolutePath()); } } else { System.out.println("File access cancelled by user."); } }