Imágenes en Base datos y Java

Imágenes, Java/JDBC y MySQL

He recibido otra consulta que me ha gustado “¿como puedo almacenar y recuperar imágenes en MySQL desde Java?”. Hoy os vamos a contar paso a paso como se puede hacer..

Muchos de vosotros que escribís preguntando por problemas en vuestros programas, debéis ser comprensivos y tener en cuenta que recibimos muchas peticiones diarias, no podemos atenderlas todas (el tiempo no da para tanto) ….. . Tratad de usar el foro y consultad los tutoriales disponibles, que muchas cosas solicitadas las podéis encontrar ya resueltos.

Creación de la Tabla

En una de nuestras bases de datos, creamos una tabla (con la consola de MySQL) con los siguientes atributos

Insertar una fila en la tabla

Gracias a la consola, podemos insertar la primera imagen directamente:

Al pulsar sobre la columna de la imagen, automáticamente podemos seleccionar un fichero a insertar.

Elegimos el desado

Como curiosidad de la foto, en las jardineras de mi ventana, podéis ver que tengo habitualmente plantados melones (hay que disfrutar el placer de las cosas simples) 😉

 

Programa de recuperación de los datos

El mejor modo de entender como realizar la recuperación de los datos es leerse la propia especificación de JDBC que podéis encontrar en el Web de Sun: http://java.sun.com/products/jdbc/download.html

Necesitamos por tanto, un objeto de tipo BLOB para acceder a los datos. Volvemos a consultar la documentación, en este caso el API de JDBC http://java.sun.com/j2se/1.3/docs/api/java/sql/Blob.html

Y escribimos un código sencillo (no tengáis en cuenta el diseño … ya que es lamentable …. pero no quiero complicar su seguimiento)

Como curiosidad, podéis ver los tiempos:

Supongo que aquí os daréis cuenta de la necesidad de usar pooles de conexiones.



Podéis descargaros el código aquí

Otros enlaces de Interés

Podéis encontrar información valiosa sobre codificadores de distintos formatos en el siguiente enlace.

http://www.geocities.com/marcoschmidt.geo/java-image-coding.html

Aunque también os deberías fijar en las nuevas APIs y filtros para el procesamiento de imágenes que ya incorpora Java en las ultimas versiones.

http://javaalmanac.com/egs/javax.imageio/Graphic2File.html

Conclusiones

Como es de prever, escribir es similar … ver setBinaryStream


Lo bueno que tiene Java es lo fácil que nos hace el trabajo, con la impresionante librería de clases que proporciona. El arte es saber encontrar los recursos con velocidad.

Superados los problemas técnicos, solo nos quedan los problemas de negocio (capturar bien requisitos, hacer un análisis antes de lanzarlos a picar…) y la capacidad de hacer buenos diseños ….. cosa que poca gente tiene tiempo para poder hacer (y conocimientos debido a la falta de tiempo) .

Sobre el Autor ..