Guardar y Leer Imagenes en Mysql con Java

Guardar y Leer Imagenes en Mysql con Java

Guardar y Leer Imagenes en Mysql con Java
5 (100%) 6 votos

En este Articulo veremos como Guardar y Leer Imagenes en Mysql con Java, guardar imágenes en una base de datos para su posterior uso es algo fundamental en programación. En resumen veremos los 2 metodos principales que nos permitiran hacer esto, un metodo para guardar una Imagen en la base de datos en un campo de tipo blob, y un metodo que nos permite obtener el contenido de ese campo y convertilo a un arreglo de bytes para su posterior conversion a objeto Image de Java y asi poder escribirlo de nuevo a disco.

Lo que Haremos…

Realizaremos una aplicacion que estara divida en dos partes, en la parte superior podremos seleccionar una imagen de nuestro disco duro, ver una vista previa de la imagen y un boton para guardar en la base de datos. La parte Inferior tendremos una vista previa de todas las imagenes que se encuentran en la base de datos y un boton para leer esa imagen, seleccionar donde queremos guardarla y guardarla en disco.

Tendra el siguiente Aspecto:

Guardar y Leer Imagenes en Mysql con Java 1

Antes de..

El proyecto lo hemos desarrollado con Netbeans y hemos importado el conector de mysql para hacer la conexion con la base de datos. En la Base de Datos existe una tabla llamada Imagenes con los campos: idImagen, imagen y nombre, esta tabla fue realizada con la siguiente instruccion mysql:

[note]
El tipo de campo Blob son objetos binarios grandes en los que podemos almacenar Imagenes (en realidad todo tipo de objetos), pero no son los unicos tambien existen TINYBLOB, MEDIUMBLOB and LONGBLOB. Las Diferencias? visita el siguiente enlace.
[/note]


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy

Utilizaremos..

Guardar Imagenes en La Base de Datos

El siguiente metodo recibe una cadena String con la ruta de la imagen en disco y el nombre de la imagen(para cuando se quiera leer y guardar de nuevo a disco), despues se utiliza el metodo setBinaryStream para insertar en la Base de Datos.

Leer Imagenes desde La Base de Datos

El siguiente Metodo devuelve un Arraylist de Objetos tipo Imagen, este tipo Imagen es una clase definida por nosotros para guardar tanto la imagen como el nombre de esta, esta clase la veremos mas adelante. Despues Seleccionamos todas las imagenes y nombres de la base de datos, obtenemos el campo tipo blob y convertimos a imagen, obtenemos el nombre de la imagen y luego los agregamos en nuevo tipo Imagen, este proceso se repite hasta que se agregen todas las imagenes de la base de datos en nuestro ArrayList, luego retornamos esta lista con todas las imagenes y nombres de imagen.

  • Clase Imagen

Nos sirver para guardar la Relacion entre Imagen y nombre de Imagen.

Contrata Hospedaje Web con Dominio Incluido Gratis en DigitalServer!
———

Video

Quieres todo el Codigo del Proyecto?

[lockercat]Descargalo aqui[/lockercat]

Guardar y Leer Imagenes en Mysql con Java

Guardar y Leer Imagenes en Mysql con Java
5 (100%) 6 votos

21
Dejar un comentario

avatar
14 Comment threads
7 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
16 Comment authors
Alexandra TobonnvzErnesto Rodriguez DiazjuanGustavo Recent comment authors
  Subscribe  
Notify of
nvz
Guest
nvz

hey como creo la base de datos para el codigo

Ernesto Rodriguez Diaz
Member
Ernesto Rodriguez Diaz

oye me puedes pasar tu codigo no puedo descargarlo porfavor

juan
Guest
juan

queria saber si me podias ayudar con un insertar mostrar eliminar y actualizar una imagen, pero
con procedimiento almacenado. gracias

Gustavo
Guest
Gustavo

Hola que tal
tengo una duda sobre el metodo de lectura
si la quiero traer hacia un archivo web (jsp)
tengo que hacer algun paso adicional ya que no lo muestra

andres
Guest
andres

HOLA, me puedes ayudar para guardar imagenes en la db solo que estoy trabajando en un proyecto web y la parte en donde el usuario debe subir las imagenes no logro hacer esa parte.

Angel
Guest
Angel

Hola Jonathan, saludos Tengo 2 pc (pc1 y pc2)…cada uno contiene una BD en Mysql…deseo tomar de una tabla el campo foto1 (Imagen) atraves de un query y que con ese campo Imagen hacer un Update en el otro pc2 y actualizar el campo foto2 (Imagen2)…tengo esto del pc1: Connecion conecc = new Connecion(); String query = “select foto1 FROM usuario WHERE num = ‘123456’; java.sql.Statement stmt = conecc.conectar().createStatement(); ResultSet results = stmt.executeQuery(consultaGenerada); results.next(); Blob campo = (Blob) results.getBlob(“foto1”); Como sería la conversión de la imagen como tal? Necesito que en el query del update me lleve todo el contenido… Read more »

nelson
Guest
nelson

Excelente aporte!!… puedes enviarme el link para descargar el codigo completo ?

Nelson
Guest
Nelson

Excelente ! Puedes pasarte el link del código?

Assiel
Guest
Assiel

por buenas practicas de programación regularmente se le asigna un nombre adecuado o referente a cada item del frame ademas de comentar el código para que cualquier programador puede hacer uso de el antemano gracias por el aporte

Carlos Hernandez
Guest
Carlos Hernandez

Hola que tal me gusto mucho tu post pero tengo una duda es cualquier tipo de imagen es que solo puedo guardar una imagen en especifico y otras me lanza un error que no puedo guardarla, agradeceria mucho tu ayuda, podrias auxiliarme en eso.

Dany Solis
Guest
Dany Solis

Hola que tal comentarte que ha gustado tu post he querido descargar el proyecto pero al abrir el archivo me lanza un error.
Podrias enviarme el proyecto a josedaniel.v.solis@hotmail.com o subirlo de nuevo no se cual seal el error.

Jonathan Melgoza
Guest
Jonathan Melgoza

Hola Dany,

Cual es el error? He descargado el proyecto y lo he abierto y ejecutado inclusive con el netbeans y todo perfecto.

Saludos!

Dany Solis
Guest
Dany Solis

El problema es el Zip me marca un error no me deja abrirlo y con el Win Rar lo abro pero no me deja extraer el archivo.

Codigo Java
Guest
Codigo Java

Hola que tal,antes que nada me encanto tu post, un favor podrias subir el proyecto completo para verlo? no me deja descargarlo.Saludos

Jonathan Melgoza
Guest
Jonathan Melgoza

Hola,

Perdón por la tardanza tu comentario se me perdio un tiempo, el enlace ya esta arreglado gracias por avisar.

Saludos!

OSCARZ
Guest
OSCARZ

hola Jonathan estoy Utilizando tu ejemplo pero tengo un problema al momento de hacer el INSERT me muestra un msg que me dice Data too long for column ‘imagen’ at row 1 no se si es por el tipo de imagen que utilizo que es .jpg y veo que tus imagnes son .png

Jonathan Melgoza
Guest
Jonathan Melgoza

Hola Oscarz,

Al momento de crear tu tabla que tipo de campo utilizaste para tu columna de imagen? Cual es el tamaño de la imagen que quieres insertar?

TINYBLOB: maximum length of 255 bytes
BLOB: maximum length of 65,535 bytes
MEDIUMBLOB: maximum length of 16,777,215 bytes
LONGBLOB: maximum length of 4,294,967,295 bytes

Saludos!

oscar
Guest
oscar

en JavaEE, tengo en base de datos un campo para imagen, en java la @Entity class mapea este dato como ( private byte[] foto; ) , en el navegador a través de un controlador y un EJB se leen los datos de la tabla, el dato tipo foto necesito convertirlo a imagen desde la misma entidad es decir que el “get” de foto devuelva un archivo tipo imagen y no byte. alguien conoce como realizar esto?

Jonathan Melgoza
Guest
Jonathan Melgoza

Hola Oscar,

mm no se si entendi bien pero quieres un metodo para convertir de bytes a image no? intenta esto..

private BufferedImage createImageFromBytes(byte[] imageData) {
ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
try {
return ImageIO.read(bais);
} catch (IOException e) {
throw new RuntimeException(e);
}
}

Saludos!

Jorge Rafeel
Guest
Jorge Rafeel

Podrias pasarme el codigo pa descargar

Alexandra Tobon
Guest
Alexandra Tobon

Oscar te dio ese crud? si te dio pra ver si me puedes ayudar