0

タイトルにあるように、jsliderを動かしたときに、(longblobに保存されている)画像を非常に高速に取得したいと思います。360のケースがあり、エラーなしで動作しますが、問題は、jsliderを移動したときの各ケース/画像の遅延/遅延にあります。ローカルマシンから取得した画像を使用してこのアイデアをテストしましたが、非常に高速でクリーンに動作します。問題はインターネット接続にある可能性があることは知っていますが、少なくとも3〜4 MB/sのダウンロード/アップロードがあると信じてください。

いくつかの補足事項:テーブルエンジン:MyISAM列:すべての画像を含むlongblob〜170-200 kb-.png

//calling jslider and setup

jslider1 = new javax.swing.JSlider();  //my jslider
jslider1.setMajorTickSpacing(10);
jslider1.setMaximum(360);
jslider1.setMinorTickSpacing(5);
jslider1.setOrientation(javax.swing.JSlider.VERTICAL);

//and my change event

private void jslider1StateChanged(javax.swing.event.ChangeEvent evt) {   
    int x = jslider1.getValue();
    switch (x) {
           case 1:

                try {
                    String sql = "select imga from test where deg ='" + x + "'";
                    pst = conn.prepareStatement(sql);
                    rs = pst.executeQuery();

                    if (rs.next()) {
                        byte[] imagedata = rs.getBytes("imga");
                        format = new ImageIcon(imagedata);
                        jLabel1.setIcon(format); //where I put my image
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;

           case 2:

                  //[...]  //I have 360 cases

    }
} // close state changed
4

1 に答える 1

0

とにかく画像をロングブロブに保存したいのはなぜですか?あなたはそれらを瓶自体の中に保存することはできません。それでもデータベースlongblobから取得する場合は、Cachingを使用してデータベースからlongblobをロードし、Swingアプリケーションの起動時にInitializingAsynchronousThreadを使用してローカルシステムにキャッシュすることを検討してください。

于 2013-02-08T12:01:19.970 に答える