【发布时间】:2014-05-05 23:02:45
【问题描述】:
我正在尝试从目录加载图像并将其作为图标放在JLabel 中。但是当图像尺寸很大时,它并不完全适合标签。我尝试调整图像大小以适合标签,但它不起作用。我可以知道我哪里出错了吗?
JFileChooser choose=new JFileChooser();
choose.showOpenDialog(null);
File f=choose.getSelectedFile();
String filename=f.getAbsolutePath();
path.setText(filename);
ImageIcon icon=new ImageIcon(filename);
Image img=icon.getImage();
BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics g = bi.createGraphics();
g.drawImage(img,500, 500, null);
ImageIcon newIcon = new ImageIcon(bi);
image_label.setIcon(newIcon);
【问题讨论】:
-
“我哪里出错了?” - 首先,您创建一个
BufferedImage,其大小与您刚刚加载的图像相同,然后绘制图像画布内 500x500...除非图像大于 500x500,否则图像将被渲染出视野... -
@MadProgrammer 我尝试过您提供的 2 个示例,我想承认我是处理图像的新手,因此我无法理解发生了什么。我的 jLabel 的大小是 500x500,因此我将图像缩放到 500x500,我加载的图像肯定比这大,
-
你没有缩放它,
drawImage(Image, int, int, ImageObserver)在指定的 x/y 位置绘制图像,它没有缩放它... -
@MadProgrammer BufferedImage img=null;尝试 { img=ImageIO.read(f); BufferedImage dimg = (BufferedImage) img.getScaledInstance(500,500,Image.SCALE_SMOOTH); ImageIcon imageIcon = new ImageIcon(dimg); image_label.setIcon(imageIcon);这段代码怎么样?
标签: java image swing jlabel imageicon