私は、とりわけ画像のフォルダ(通常は約2000 jpeg画像)を取得してサイズを変更し、画像のタイムラインに追加するプログラムを作成しています。この結果は次のとおりです。
これは問題なく機能しますが、私がこれを行った方法は非常に非効率的です。これらの画像を処理するコードを以下に示します。
public void setTimeline(Vector<String> imagePaths){
int numberOfImages = imagePaths.size();
JLabel [] TotalImages = new JLabel[numberOfImages];
setGridPanel.setLayout(new GridLayout(1, numberOfImages, 10, 0));
Dimension image = new Dimension(96, 72);
if (imagePaths != null){
for(int i = 0; i <numberOfImages; i++){
TotalImages[i] = new JLabel("");
TotalImages[i].setPreferredSize(image);
ImageIcon tempicon = new ImageIcon(imagePaths.elementAt(i));
Image tempimage = tempicon.getImage();
Image newimg = tempimage.getScaledInstance(96, 72, java.awt.Image.SCALE_SMOOTH);
ImageIcon newIcon = new ImageIcon(newimg);
TotalImages[i].setIcon(newIcon);
setGridPanel.add(TotalImages[i]);
}
}
}
ご覧のとおり、このコードは各画像パスをループし、それをラベルに追加してパネルに追加します。正しい出力で正確に実行されます。
ただし、これを行うのにかかる時間はかなりのものです。通常、2000枚の画像の場合は約5分です(マシンによって異なります)。さまざまな手法を使用してこのパフォーマンスを向上させる方法はないかと思いました。
どんな助けでも大歓迎です。