【问题标题】:Java load images fasterJava 加载图像更快
【发布时间】:2012-05-22 13:31:16
【问题描述】:

我正在尝试用 Java 编写一个简单的轻量级图像浏览器,目前我正在使用ImageIO.read(new File(/* PATH_TO_IMAGE */)) 来加载图像。

问题是,加载 10 个 JPEG 需要 10467 毫秒。这似乎很慢,尤其是当我计划加载数百张图片时。

有没有更快的加载方式?

另外,我通过在 JPanel 中覆盖 paintComponent 并使用 Graphics2D 绘制缩略图来绘制缩略图,如果这有什么不同的话。 (并随时提出更好的方法来做到这一点)

【问题讨论】:

  • 您是在串行加载文件吗?
  • 如果你使用多个线程,你会得到什么样的数字?您是否考虑过自己先单独执行 i/o,以便了解执行原始 ImageIO 解码需要多长时间?
  • 您的缩略图生成和绘图是否包含在您的原始计时中?
  • “在 2 到 6 MB 之间。” 像素有多大? JPEG 意味着一个 JPEG 和另一个 JPEG 之间可能有 10 倍的压缩系数,因此“文件大小”并不是衡量图像大小(以像素为单位)的好方法。

标签: java performance image swing


【解决方案1】:

根据@Thomas Mueller 关于缩略图的建议,您可以将繁重的工作交给SwingWorker,如here 所示。另请参阅此answer 重采样。

【讨论】:

    【解决方案2】:

    如果您想显示缩略图,您应该考虑创建和存储缩略图。

    您不能期望每秒能够加载数百个 6 MB 的文件。缩略图大约 50 KB,加载速度更快(“加载”是从硬盘读取并在内存中解码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      • 2012-12-02
      • 2017-10-07
      相关资源
      最近更新 更多