我正在编写一个程序,涉及到许多图像的自定义搜索。当用户输入他们的搜索条件时,相应的图像将从缓存或服务器中获取。我有一个显示指向相应图像的链接的JTable。当用户点击链接时,图像显示在JPanel上。点击链接时,我可以从硬盘读取图像,但速度并不像我想的那么快。加载它需要几秒钟的时间。我已经尝试创建一个BufferedImage数组,但如果搜索返回许多结果,我去奥姆。我想知道什么是点击链接时更快速地显示图像的最佳方式。在java中加载很多缓冲图像100+到内存
继承人我如何获取图片...
Public void getFile(String fileName){
File file = new File("./cache/"+fileName);
boolean exists = file.exists();
BufferedImage returnImage =null;
if(exists){
try {
returnImage = ImageIO.read(file);
System.out.println("Found In Cache!");
} catch (IOException|IndexOutOfBoundsException e) {
try {
if(fileName != null){
returnImage = downloadImage(fileName);
System.out.println("Found ON Server :(");
}
} catch (IOException |IndexOutOfBoundsException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
}else{
try {
if(fileName != null){
returnImage = downloadImage(fileName);
System.out.println("Found ON Server :(");
}
} catch (IOException |IndexOutOfBoundsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return returnImage;
}
}
而这正是我把它们放在一个数组...
BufferedImage[] images = new BufferedImage[numOfSearchResults];
for(SearchResult r: results){
images[i] = imageCache.getFile(r.imageName);
}
基本上我只是想知道会是什么最好的方式来预先加载图像,而不会发生。提前致谢
从磁盘加载图像并显示它不应该花费几秒钟,除非它是一个非常大的图像(磁盘空间很大尺寸)。你有没有分析你的应用程序,看看图像加载是否确实是瓶颈? – Robin 2012-07-25 16:14:40
什么是奥姆? – 2012-07-25 16:15:52
@SteveKuo我编辑了包含正确的标记。 – 2012-07-25 16:16:14