Não estava conseguindo utilizar o exemplo ByteToImage pois preciso que receba o blob e converta em imagem num componente JLabel, quando dava um JLabel.setIcon dava erro pois ele pede uma string (File) e estava passando Byte, como preciso apenas que mostre a imagem no componente consegui resolver essa etapa convertendo Blob em Byte, Byte em Image e Image em ImageIcon. Seu exemplo foi fundamental para conseguir chegar na solução, segue primeira solução:
//Recebendo blob do BD e colocando num JLabel
public void blobToImage(Blob blobBD, JLabel label) throws Exception {
//Converte blob em Image
byte[] image = blobBD.getBytes(1, (int) blobBD.length());
Image img = Toolkit.getDefaultToolkit().createImage(image);
//Escala imagen dentro do JLabel (no meu caso o JLabel possui: 272 por 192)
Image newimg = img.getScaledInstance(272, 192, java.awt.Image.SCALE_SMOOTH);
ImageIcon imageIcon = new ImageIcon(newimg);
//Apresenta a imagem no componente JLabel
label.setIcon(imageIcon);
}
Agora para pegar a imagem selecionada e inserir no BD fiz da seguinte forma:
No actionPerformance do botão que seleciona a imagem temos o código:
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
int res = fc.showOpenDialog(null);
if (res == JFileChooser.APPROVE_OPTION) {
File arquivo = fc.getSelectedFile();
//Limpa a imagem atual do JLabel
txtFoto.setIcon(null);
imagemPath = arquivo.getAbsolutePath();
//Seta a imagem selecionada
Image img = new ImageIcon(arquivo.getAbsolutePath()).getImage();
//Redimensiona a imagen
Image newimg = img.getScaledInstance(280, 192, java.awt.Image.SCALE_SMOOTH);
ImageIcon imageIcon = new ImageIcon(newimg);
//Seta a imagem ao componente JLabel
txtFoto.setIcon(imageIcon);
}else{
imagemPath = null;
}
Lá no botão salvar tenho a linha que faz o Set deste campo:
bean.setFotoPatch(imagemPath);//Grava o caminho da imagem selecionada que será utilizado na classe DAO
Lá na classe DAO onde tenho o INSERT e UPDATE faço da seguinte forma na linha referente a este campo:
if (bean.getFotoPatch() != null) {
InputStream is;
is = new FileInputStream(new File(bean.getFotoPatch()));
pstm.setBlob(4, is);
} else if (bean.getFotoPatch() == null) {
pstm.setBlob(4, (Blob) null);
}
Tudo rodando perfeito, obrigado.