Foro sobre Java SE > como plantearíais este problema?imagenes en BBDD
Supongo que las fotos estarán almacenadas en Blobs, por lo que las consultas se hacen mediante parámetros de tipo byte[] o Blob como ya sabrás.
El problema es convertir una Image de Java a byte[] o a Blob, y viceversa.
Lo he resuelto hace bastante tiempo, pero son necesarios varios métodos de conversión.
Lo mejor sería que mirases tu mismo en:
http://www.javaforge.com/scm/dir/3171//JPTools/JPTools-Core/src/org/jptools/core/lookup/services/impl/open
en el archivo JPImageUtilitiesImpl.java están todos los métodos que necesitas.
Date cuenta de que esa clase utiliza recursos de NetBeans Platform, por lo que no te va a funcionar sin más un "copia y pega" de toda la clase ;)
Busca los métodos relacionados con tu pregunta, y cópialos ellos solos.
En caso de dificultades, las reclamaciones al administrador del proyecto ;D
No se si va de algo, pero una vez hice una base de datos con Sqlite donde a cada usuario le asociaba una una url donde almacenaba las fotos; cuando quería mostrar una foto de un usuario dado; lo localizaba con sql y tomaba la url y se la mandaba a un jLabel.
Amigo mio yo lo hice hace mucho tiempo con estas sencillas lineas de codigo... De antemano creo que ya la tienes almacenada en base de Datos, entonces solo te doy el codigo para sacarla de allí y pasarla a un JLabel
public boolean getImagen(String id) throws SQLException
{
//Este es el objeto que me conecta a la DB
Conectar con3 = new Conectar();
//Hago la consulta a la DB
boolean valor=con3.conexion("select imagen from fotos where id='"+id+"'" ,0);
if(valor)
{
// obtengo los datos del objeto y los guardo en Resultset r
java.sql.ResultSet r = con3.getResultSet();
byte[] i = null;
//le paso la imagen a "i" variable del tipo byte[]
i = r.getBytes("imagen");
// luego la paso a un imageicon
ImageIcon m = new ImageIcon(i);
//y ahora si la paso al JLabel, el cual se llama "img"
img.setIcon(m);
//cierro el resultset
r.close();
}
//finalizo el objeto DB
con3.finalize();
return valor;
}
}
Si las imágenes son grandes, como parece que es el caso, tal vez necesite usar BufferedImage
ok muchas gracias lo intento y os cuento l resultado muchisimas gracias de antemano, antes de abrir el post ya habia resuelto hasta hacer la consulta de un objeto tipo BLOB lo que no me quedaba muy claro era lo de mostrarla en un JLabel, es el mejor metodo?? he estado leyendo por otros sitios y comentan que es un apaño.. pero que no es lo ideal.Que pensais?? gracias de todas maneras mañana os cuento voy a meterle mano ahora, graciasssssss!!
Si vas a presentar las imágenes, y tal vez hacer "algo" con ellas, como zoom, rotar, transparencias, y similares, lo más lógico es "pintarlas" en un JPanel.
Usar un JLabel para eso es... ¡Una chapuza! ;D
También puedes utilizar www.iziras.com para generar la ventana java. El programa que te genera el portal usa JPanel para mostrar las imagenes. Puedes hacer zoom sobre ellas, cargarlas y guardarlas en tu base de datos.
buenas tardes estoy haciendo un programa que sea un catálogo comercial. Los datos los tengo en una base de datos mysql y ya he codificado todas las consultas de datos sin problemas. Ya rescato cualquier dato de la base de datos y lo muestro por pantalla, mi problema ahora es el siguiente: las fotos de los productos también están en la base de datos, ¿como puedo realizar consultas y mostrarlas en la aplicación??, para que os hagáis una idea querría mostrar 4 fotos en cada pantalla y poner un par de botones para pasar 4 mas o para volver atrás. Otro problema que me surge es que posiblemente aunque lo consiga el sistema sera muy lento ya que las fotos tienen bastante resolución,¿alguna idea?? muchas gracias de antemanooo!!