我正在编写一个程序,其中一项任务是将一个包含大约2000个jpeg图像的文件夹进行缩放,并将它们添加到时间轴上。最终效果如下图所示:
这个程序能够正常工作,但是我感觉实现方式非常低效。下面是用于处理这些图片的代码:
public void setTimeline(Vector<String> imagePaths){
int numberOfImages = imagePaths.size();
JLabel [] TotalImages = new JLabel[numberOfImages];
setGridPanel.setLayout(new GridLayout(1, numberOfImages, 10, 0));
Dimension image = new Dimension(96, 72);
if (imagePaths != null){
for(int i = 0; i <numberOfImages; i++){
TotalImages[i] = new JLabel("");
TotalImages[i].setPreferredSize(image);
ImageIcon tempicon = new ImageIcon(imagePaths.elementAt(i));
Image tempimage = tempicon.getImage();
Image newimg = tempimage.getScaledInstance(96, 72, java.awt.Image.SCALE_SMOOTH);
ImageIcon newIcon = new ImageIcon(newimg);
TotalImages[i].setIcon(newIcon);
setGridPanel.add(TotalImages[i]);
}
}
}
如您所见,这段代码循环遍历每个图像路径,将其添加到标签并添加到面板中 - 输出与预期完全一致。
然而,执行时间相当长。对于2000个图片,通常需要大约5分钟的时间(取决于计算机)。我想知道是否有任何方法可以通过使用不同的技术来提高性能?
非常感谢您的帮助。