Java - Manejo de imágenes Java-Mysql

 
Vista:

Manejo de imágenes Java-Mysql

Publicado por John (1 intervención) el 15/11/2018 07:49:01
Hola amigos tengo una pregunta. Estoy creando un pequeño programa en java con conexión a Mysql. Y a puedo enviar la imagen y traerla para mostrarla en un JLabel. De esta manera traigo la foto.
1
2
3
4
5
6
7
// En la BD el campo para la imagen es tipo Blob
InputStream ii=null;
ii = st.getBinaryStream(1);
BufferedImage  nii= ImageIO.read(ii);
imag = new ImageIcon(nii.getScaledInstance(FOTO.getWidth(), FOTO.getHeight(),
Image.SCALE_DEFAULT));
FOTO.setIcon(imag);

Mi pregunta es como puedo volver a enviar esa imagen a la base de datos sin volver a seleccionar la imagen del pc.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Manejo de imágenes Java-Mysql

Publicado por Billy Joel (876 intervenciones) el 15/11/2018 16:52:23
Es casi imposible que uno se las sepa todas, pero si es importante saber buscar y buscando me he encontrado con esto...
Teniendo en cuenta que tienes un BufferedImage nii a partir de ahí sería convertirlo en un array de bytes
1
2
3
ByteArrayOutputStream b = new ByteArrayOutputStream();
ImageIO.write(nii, "jpg", b);
byte[] imageInByte = b.toByteArray();

No estoy seguro de como haces las consultas/sentencias a MySql... Los principiantes usan Statement y los mas avanzaditos utilizan PrepareStatement.

Para completar el ejemplo vamos a suponer que utilizas PrepareStatement y que ya tenemos la conexión a la base de datos (cn)
También supondremos que la tabla donde guardas las imagenes se llama tabla_imagenes entonces sería algo así
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PreparedStatement pst = null;
int afectados = 0;
String sqlCommand = "update tabla_imagenes set imagen = ? where id = ?";
try {
    pst = cn.prepareStatement(sqlCommand);
    pst.setBytes(1,imageInByte);
    pst.setString(2,id);
    afectados = pst.executeUpdate();
} catch (SQLException ex) {
    ex.printStackTrace(System.out);
} finally {
    try {
        if (pst != null) {
            pst.close();
        }
        if (cn != null) {
            cn.close();
        }
    } catch (SQLException ex) {
        ex.printStackTrace(System.out);
    }
}

Espero te sirva
Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar