Tenho um panel na minha aplicação que recebe a imagem da cam e inseri no cadastro do aluno uma foto dele.
Andei lendo como eu faria para inserir no banco e cheguei a conclusão que eu deveria transformar esta foto em um bufferedimage para depois transformar em um array de bytes.
E meu código ficou assim:
public static BufferedImage ImageToBuffered(Image im) {
BufferedImage bi = new BufferedImage(im.getWidth(null), im.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics bg = bi.getGraphics();
bg.drawImage(im, 0, 0, null);
bg.dispose();
return bi;
}
/*
* Transforma um BufferedImage pra um array de bytes
*/
public static byte[] bufferToBytes( BufferedImage buffer) throws Exception {
byte[] bytes = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
if ( buffer != null)
ImageIO.write(buffer,"jpg", baos);
} catch (IOException e) {
baos = null;
throw e;
} finally {
if ( baos != null )
bytes = baos.toByteArray();
}
return bytes;
}
Então eu envio para o banco.
Quando eu tento abrir esta foto, não consigo abrí-la, pois diz que o arquivo esta corrompido ou danificado ou ele é muito grande.
O código que estou usando para criar um novo arquivo está assim:
private void geraFoto(byte[] foto) throws IOException{
byte[] imgBytes = foto;
try{
FileOutputStream fos = new FileOutputStream("c:\\teste\\Teste.jpg");
fos.write(imgBytes);
FileDescriptor fd = fos.getFD();
fos.flush();
fd.sync();
fos.close();
}
catch(Exception e){
String erro = e.toString();
}
}
Se alguém puder me ajudar com este problema, pois já procurei em vários sites e não estou conseguindo resolver.