那时,我通过摄像头捕获库成功地操纵了我的摄像头。这是我的密码:
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);
}
}
从bufferedimage中,我将其转换为bytearray以适应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恢复到图像中?如果有,请随意修改代码,让我更清楚地理解。我试过我认为所有可能的方式从谷歌。
暂无答案!
目前还没有任何答案,快来回答吧!