标签: java performance image swing
我正在尝试用Java编写一个简单的轻量级图像浏览器,目前我正在使用ImageIO.read(new File(/* PATH_TO_IMAGE */))来加载图像。
ImageIO.read(new File(/* PATH_TO_IMAGE */))
问题是,加载10个JPEG需要10467毫秒。这似乎很慢,特别是当我计划可能加载数百张图像时。
有没有更快的方法来加载它们?
另外,我通过覆盖JPanel中的paintComponent并使用Graphics2D绘制缩略图来绘制缩略图,如果这有任何区别的话。 (并随意建议更好的方法来做到这一点)
paintComponent
答案 0 :(得分:3)
如果要显示缩略图,则应考虑创建和存储缩略图。
您不能指望每秒能够加载数百个6 MB的文件。缩略图大约为50 KB,加载速度更快(“加载”从硬盘读取并在内存中解码)。
答案 1 :(得分:3)
根据@Thomas Mueller关于缩略图的建议,您可以将繁重的工作卸载到SwingWorker,显示为here。有关重新采样的信息,请参阅此answer。
SwingWorker