Java: Recuperar Imagen desde Base de Datos Mysql

Hola, con el post anterior expliqué como guardar una imagen en una Base de datos Mysql, pues resulta que un compañero me planteó la pregunta ¿y cómo la recupero desde la BD?, recordé que para esta faena me tomé un poco de tiempo.

Así que aquí coloco el código, que permite recuperar una imagen desde una base de datos Mysql.

Éste método recoge la imagen desde la BD y devuelve la imagen lista para usar.

import java.awt.Image;
import java.io.IOException;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public Image abrirImagen() throws SQLException, IOException
 {
 Image rpta=null;
 String sql = "SELECT * FROM imagen limit 1";
 //En este ejemplo solo recupero la primera Imagen
 java.sql.Statement stmt = conexion.createStatement();
 ResultSet results = stmt.executeQuery(sql);

 Blob imagen=null;
 while(results.next())
    Blob imagen = results.getBlob("Imagen");

 rpta= javax.imageio.ImageIO.read(imagen.getBinaryStream());
 //Esta parte es clave, donde se convierte a imagen
  return rpta;
 }

Espero haber ayudado con este post, y nos vemos. Saludos a todos.

Actualización: Video demostrativo

 

13 comentarios sobre “Java: Recuperar Imagen desde Base de Datos Mysql

  1. Buenas Cesar, o el que escribio este programa muy bueno, solo que para desplegar la imagen en la aplicacion tengo problemas, porque lo estoy haciendo en un metodo privado y con try y catch y se me genera errores, he intentado muchas formas pero no encuentro la solucion, te agradeceria que me contestas, alguien gracias

  2. Hola..
    hee muy buena tu informacion muchas gracias era lo que estaba buscando
    un favor me podrian pasar el proyecto de su video ..
    de antemano Gracias

  3. sta bueno. se puede hacer esto en JSP? yo quiero que se guarde en un directorio no en BD. pero desde un formulario.. como seria.. Gracias

    1. try {
      ResultSet res = ldao.getImagen(equipo);

      if (res.next()) {

      Image i;
      Blob blob = res.getBlob(«imagen»);
      i = javax.imageio.ImageIO.read(blob.getBinaryStream());
      ImageIcon image = new ImageIcon(i);
      image = new ImageIcon(image.getImage().getScaledInstance(
      this.lblImagen.getWidth(),
      this.lblImagen.getHeight(),
      Image.SCALE_DEFAULT));
      lblImagen.setIcon(image);

      }

  4. Como se podria hacer para que una vez que has cargado la imagen en sql y ya la visualizas la puedas ahora descargar, ya la tengo en selección por medio del siguiente codigo.

    try{
    String busca_reg=»SELECT * FROM base WHERE campo=»+variable.getText()+»‘»;

    Statement st=cn.createStatement();
    ResultSet rs=st.executeQuery(busca_reg);
    rs.next();

    Image der=null;
    Blob blob2=rs.getBlob(«imagen»);
    der=javax.imageio.ImageIO.read(blob2.getBinaryStream());
    der = der.getScaledInstance(255, 190, Image.SCALE_DEFAULT);
    ImageIcon image2=new ImageIcon(der);
    lbl_img.setIcon(image2);
    vimg_carga.setVisible(true);
    vimg_carga.setText(timagen);

    }catch (Exception ex) {
    JOptionPane.showMessageDialog(null,»Error «+ex);
    }

    Ahora que ya la he elegido deseo que por medio de un boton poderla descargar a un archivo.jpg en otro equipo pc

    Saludos

Replica a Marco Antonio Cuba Villena Cancelar la respuesta