如何有效地一次加载许多图像?

时间:2013-06-09 21:09:22

标签: java image imageview javafx-2

我正在开发一个应用程序,让用户可以将图像分配给人,然后按人名查看图像。我目前正在做的是,当一个人被点击时,该人的所有图像将被加载到他们的个人ImageView中。这在加载三个或四个图像时工作正常,但是当涉及20多个图像时,事情开始变得有点滞后。

所以,我的问题是:如何在不完全延迟应用程序的情况下有效地从文件加载这些图像?


我想过的事情:

  1. 预启动器,在启动主应用程序之前加载来自所有人的所有图像。如果删除了其中一个文件,则会出现问题。
  2. 使用迷你预加载器加载所有图像,然后再显示它们。
  3. 当用户点击此人时,不使用加载程序加载图像。

1 个答案:

答案 0 :(得分:4)

如果您希望应用程序保持可伸缩性(轮流使用数百个图像),则在应用程序启动之前加载它们是不可行的。

您看到应用程序延迟的原因很可能是有限的硬盘驱动器带宽(可能需要进行分析)。您可以采取一些措施来改善图像加载(例如,使用优化的图像格式/存储图像的缩小版本等),但在某些时候,您将始终从磁盘加载内容。

1)我建议您创建一个由ImageViewProgressIndicator组成的自定义节点。让用户知道正在加载其他图像。

2)让有限数量的工作线程加载图像以避免在等待磁盘时出现过多阻塞

3)尽可能预加载和缓存图像。这是使用SoftReferences实际上是一个好主意的少数情况之一。