非常快速地从longblob MySQL读取图像

时间:2013-02-08 11:54:26

标签: java mysql blob jslider

正如标题所说,我想在移动jslider时非常快地检索图像(存储在longblob中)。我有360个案例,它没有错误,但问题在于移动jslider时每个案例/图像的延迟/延迟。我用本地机器上的图像测试了这个想法,它的工作非常快/干净。我知道问题可以来自互联网连接,但相信我,我至少有3-4 MB / s的下载/上传。

几个额外的笔记: 表引擎:MyISAM column:longblob with every images~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

1 个答案:

答案 0 :(得分:0)

为什么要将图像保存在长片中呢?你不能把它们存放在Jar本身。如果您仍想从数据库longblob中检索,请考虑使用Caching从数据库加载longblobs,并在Swing应用程序启动时使用Initializing Asynchronous Thread将其缓存在本地系统中。