我正在尝试编写一个程序,该程序将遍历大量图像并对它们应用各种操作,然后存储使用结果来训练自组织地图,我希望为该程序编写一个前端,用于我正在处理的每个图像它将显示原始图像,并在我对其应用操作后显示结果图像,到目前为止,我已经编写了一个 GUI,根据我的研究,它应该显示图像(我已经缩放,因为有些可能相当大(
这是我运行程序时得到的,我想要的是显示在“原始图像”标签下方的图像
这部分代码只是处理初始化,因为您可以看到一个面板被添加到框架中,所有程序都在这里。初始化面板时,运行以下代码,注意这是在 ImageComparatorPanel 类中
public ImageComparatorPanel() throws FileNotFoundException, UnsupportedEncodingException
{
setLayout(new BorderLayout());
origonalImage = new JLabel( new ImageIcon() );
leftTitle = new JLabel("Origonal Image");
rightTitle = new JLabel("Shrunken Image");
ButtonListener listener = new ButtonListener();
start = new JButton("Start!");
start.addActionListener(listener);
JPanel left = new JPanel();
left.add(leftTitle);
left.add(origonalImage);
//add(leftTitle, BorderLayout.WEST);
//add(origonalImage, BorderLayout.WEST);
add(left, BorderLayout.WEST);
add(rightTitle, BorderLayout.EAST);
add(start, BorderLayout.NORTH);
setPreferredSize(new Dimension(800,800));
}
在我的程序的主要部分(按下开始按钮时执行的位)应该更新图像的代码位如下
origonalImage.setIcon(getImage(imagePath));
getImage 函数打开图像并缩小它,以便它适合面板上的代码(我想我应该包括这个以防万一......
public ImageIcon getImage(String URL) throws IOException
{
double scale = 0.5;
File f = new File(URL);
Image image = ImageIO.read(f);
ImageIcon icon = new ImageIcon(image);
int h = icon.getIconHeight();
int w = icon.getIconWidth();
Image newImg = icon.getImage();
Image scaled = newImg.getScaledInstance((int)(w * scale), (int)(h * scale), Image.SCALE_SMOOTH);
ImageIcon newIcon = new ImageIcon(scaled);
return newIcon;
}
如何在 RUN 函数中循环的每次迭代中更改这一点,GUI 中显示的图像将被更新?