我正在编写一个程序,其中包括一个图像文件夹(通常大约 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 分钟左右(取决于机器)。我想知道是否有任何方法可以通过使用不同的技术来提高这种性能?
任何帮助是极大的赞赏。