Saltar al contenido

¿Cómo devolver una imagen al navegador en la API de descanso en JAVA?

Es fundamental comprender el código bien antes de adaptarlo a tu trabajo si tdeseas aportar algo puedes comentarlo.

Solución:

No lo probé porque no tengo el entorno en esta máquina, pero lógicamente debería funcionar de la siguiente manera, léalo como flujo de entrada y deje que su método devuelva el byte @ResponseBody[]

@GET
@Path("/app")
public @ResponseBody byte[] getFullImage(@Context UriInfo info) throws MalformedURLException, IOException 
    String objectKey = info.getQueryParameters().getFirst("path");

    BufferedImage image = resizeImage(300, 300, objectKey);
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", os);
    InputStream is = new ByteArrayInputStream(os.toByteArray());
    return IOUtils.toByteArray(is);

ACTUALIZAR
dependiendo de la sugerencia de @Habooltak Ana, no es necesario crear un flujo de entrada, el código debería tener el siguiente aspecto

@GET
@Path("/app")
public @ResponseBody byte[] getFullImage(@Context UriInfo info) throws
MalformedURLException, IOException 
    String objectKey = info.getQueryParameters().getFirst("path");

    BufferedImage image = resizeImage(300, 300, objectKey);
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", os);
    return os.toByteArray();

Puede utilizar IOUtils. Aquí hay un ejemplo de código.

@RequestMapping(path = "/getImage/app/path/filePath", method = RequestMethod.GET)
public void getImage(HttpServletResponse response, @PathVariable String filePath) throws IOException 
    File file = new File(filePath);
    if(file.exists()) 
        String contentType = "application/octet-stream";
        response.setContentType(contentType);
        OutputStream out = response.getOutputStream();
        FileInputStream in = new FileInputStream(file);
        // copy from in to out
        IOUtils.copy(in, out);
        out.close();
        in.close();
    else 
        throw new FileNotFoundException();
    

Al final de la post puedes encontrar las notas de otros administradores, tú también tienes la habilidad dejar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *