私は多くの画像のカスタム検索を含むプログラムを書いています。ユーザーが検索条件を入力すると、対応する画像がキャッシュまたはサーバーから取得されます。対応する画像へのリンクを表示するJTableがあります。ユーザーがリンクをクリックすると、画像がJPanelに表示されます。リンクをクリックするとハードドライブから画像を読み取ることができますが、思ったほど速くはありません。ロードには数秒かかります。BufferedImagesの配列を作成しようとしましたが、検索で多くの結果が返される場合は、問題が発生します。リンクをクリックしたときに画像をより速く表示するための最良の方法は何でしょうか。
これが私が画像を取得する方法です...
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);
}
基本的に、私は、画像をプリロードするための最良の方法は何であるかを考えています。前もって感謝します