visualizar imagenes

enemari
09 de Enero del 2008
Hola:
Me gustaria poder visualizar una foto cualquiera en el simulador del movil de netbeans. Para ello, quiero acceder a la Base de datos (donde esta la foto) desde un servlet, y mandar esta foto al midlet para asi poder visualizarla en el movil. Como hacerlo?

Gracias!r

kekomal
09 de Enero del 2008
Básicamente:

SERVLET:
En función de los parámetros de la request, construye la query o invoca el procedimiento almacenado correspondiente para acceder a la imagen deseada en la base de datos y saca esta al OutputStream, no sin antes especificar el Content-Type correspondiente ("image/gif", por ejemplo).

MIDLET
1. Conexión al servlet: HttpConnection conn = (HttpConnection) Connector.open(url, Connector.READ_WRITE); ...etc...

2. Convertir el InputStream correspondiente a un objeto Image: Image img = Image.createImage(is);

3. Pintar la imagen en el paint() del Canvas correspondiente y forzar el repintado.

4. No olvidarse de cerrar los recursos (Streams, conexiones, etc.).

Si tienes alguna duda más concreta, sé más específic@.

Un saludo

enemari
09 de Enero del 2008
Muchas gracias por tu respuesta. Me he informado en libros y leido como que hay que pasar la foto a un array de bytes. ¿Debo hacer esto con la solucion que me has dado tu del paint?
Gracias

kekomal
09 de Enero del 2008
Probablemente a lo que te refieres es que el servlet para enviar la imagen hace falta serializar la imagen, algo así como (siendo data un array de bytes que probablemente hayas obtenido de la base de datos donde la imagen estaría guardada como un dato tipo BLOB o algo así):

OutputStream os= con.openOutputStream();
os.write(data);
os.flush();

Para deserializarlo en el midlet, basta con hacer el Image img = Image.createImage(is); que te comenté.

Una vez ya tienes el objeto Image, en el paint del Canvas correspondiente basta con hacer un g.drawImage(img, x, y, anchor);

Un saludo