JAVA-Can';t在数据库中获取图像(mysql)
当时,我通过摄像头捕获库成功地操纵了我的摄像头。 这是我的密码:JAVA-Can';t在数据库中获取图像(mysql),java,mysql,blob,bufferedimage,Java,Mysql,Blob,Bufferedimage,当时,我通过摄像头捕获库成功地操纵了我的摄像头。 这是我的密码: public void capture() { wc.setViewSize(WebcamResolution.QVGA.getSize()); WebcamPanel wp = new WebcamPanel(wc); wp.setMirrored(true); JPanel jp = new JPanel(); tp.setSize(jp.getWidth(), jp.getHeight
public void capture() {
wc.setViewSize(WebcamResolution.QVGA.getSize());
WebcamPanel wp = new WebcamPanel(wc);
wp.setMirrored(true);
JPanel jp = new JPanel();
tp.setSize(jp.getWidth(), jp.getHeight());
tp.addTab("", wp);
tp.getParent().revalidate();
}
碰巧我想将捕获的图像保存到我的数据库(mysql)中,
好的是我能成功地保存它。
使用此代码:
public void save() {
BufferedImage bi = wc.getImage();
try {
ByteArrayOutputStream bimg = new ByteArrayOutputStream();
ImageIO.write(bi, "JPG", bimg);
byte[] imgb = bimg.toByteArray();
try {
Blob bis = conn.createBlob();
bis.setBytes(1, imgb);
String query = "insert into tbl_img (imgid,clientimg) values ('" + but.getText() + "' , '" + bis + "')";
psmt = conn.prepareStatement(query);
psmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Success", "Capture", JOptionPane.NO_OPTION);
} catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
JOptionPane.showMessageDialog(null, e);
}
}
从BuffereImage中,我通过teArray将其转换为mysql Blob标志。
与插入数据相反,我希望将其作为图像检索回来,并通过JFrame直接将其放入JLabel中。我们可以说不占用硬盘空间
我有一个检索图像的代码,但结果似乎只是一个白色的JFrame
public void open() {
try {
stmt = conn.createStatement();
String quer = " select clientimg from tbl_img where imgid='" + open.getText() + "' ";
ResultSet rs = stmt.executeQuery(quer);
while (rs.next()) {
byte[] inbytes = rs.getBytes("clientimg");
Image img = Toolkit.getDefaultToolkit().createImage(inbytes);
ImageIcon ico = new ImageIcon(img);
JFrame jf = new JFrame("Viewer");
JLabel jl = new JLabel();
jl.setSize(ico.getIconWidth(), ico.getIconHeight());
jf.setSize(ico.getIconWidth(), ico.getIconHeight());
jl.setIcon(ico);
jf.add(jl);
jf.setVisible(true);
}
} catch (Exception e) {
e.printStackTrace();
}
}
是否有其他方法或将blob检索回图像?如果有,请随意修改代码,让我更清楚地理解。我已经尝试过谷歌的所有可能方法。我强烈建议不要做这样的事情。将此类文件存储在某个文件夹中,而不是数据库中。为什么不能将图像存储在数据库中。你能用你所说的方法来帮助我吗?事实上,对于哪种方法是最好的,没有一般的规则。我曾在一个系统上工作过,该系统要求所有文件(不特别是图像,也包括pdf和doc文件)都应保存到数据库中。但除此之外,您是否尝试将恢复的字节与文件进行相同的比较?我没有。我该怎么做呢?为了简化测试,可以将字节数组传递给save方法,并使用该引用保留保存到数据库中的字节。然后将这个字节数组传递给open方法,并将来自数据库的内容与内存中的内容进行比较。这只是针对一个特定的测试,我不建议永久地更改方法签名。我强烈建议不要这样做。将此类文件存储在某个文件夹中,而不是数据库中。为什么不能将图像存储在数据库中。你能用你所说的方法来帮助我吗?事实上,对于哪种方法是最好的,没有一般的规则。我曾在一个系统上工作过,该系统要求所有文件(不特别是图像,也包括pdf和doc文件)都应保存到数据库中。但除此之外,您是否尝试将恢复的字节与文件进行相同的比较?我没有。我该怎么做呢?为了简化测试,可以将字节数组传递给save方法,并使用该引用保留保存到数据库中的字节。然后将这个字节数组传递给open方法,并将来自数据库的内容与内存中的内容进行比较。这只是针对一个特定的测试,我不建议永久地更改方法签名。