entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

¿Como regresar las imagenes en javaweb?

Tengo mi app web, ya guarda archivor en formato BLOB en mysql, me guie de esta documentacion:
Documentacion
Bueno, ahora quiero regresar los datos. ¿Cual es el tratamiento, el codigo que debe utilizarse para regresar las imagenes y si es posible, es una tamaño (resolucion) especifica.
Trabajo con JAVAWeb, mysql

1 Respuesta

4votos

GusGarsaky Puntos5480

Nota: No está testeado. Supongo que se podría mejorar, implementar otro método para obtener todas las imágenes. Ya es cuestión del requisito.

public class ImageHelper
{
    public static BufferedImage convertBlobToImg(int id)
    {
        BufferedImage image;
        try {
            ResultSet rs = st.executeQuery("SELECT image FROM Imagenes WHERE ID="+id);
            if (rs.next())
            {
                Blob blob = rs.getBlob("image");
                byte[] data = blob.getBytes(1, (int)blob.length());
                BufferedImage img = null;
                try {
                    image = ImageIO.read(new ByteArrayInputStream(data));
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
            rs.close();
        } catch (SQLException ex) {

        }
        return image;
    }
}

Y en el servlet, por ejemplo:

public class ImageServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        response.setContentType("image/jpeg");

        String pathToWeb = getServletContext().getRealPath(File.separator);
        OutputStream out = response.getOutputStream();
        ImageIO.write(ImageHelper.convertBlobToImg(1), "jpg", out);
        out.close();
    }

}

Quizás también podrías pasar la imagen como atributo, no estoy seguro.

0voto

white comentado

Como ya ha propuesto @gus garsaky, ese sería una buena manera de mostrar la imagen, y podrias obtener el id asi:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String id = Integer.parseInt(request.getParameter("id"));
    ...
    ImageIO.write(ImageHelper.convertBlobToImg(id), "jpg", out);
    out.close();
}

obteniendo la imagen asi:

<img src="imageServlet?id=<%=imageID%>" >

donde la variable imageID es el identificador de una imagen desde la base de datos

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta