Динамически создавать образ из сервлета JAX-RS - PullRequest
4 голосов
/ 21 апреля 2011

Можно ли создать изображение PNG и вывести его прямо в браузер как часть ресурса JAX-RS?

Примерно так:

@Path("img/{externalId}")
@Stateless
@Produces({"image/png"})
public class MyImgResource {

  @GET
  public Response (@PathParam("externalId") String externalId) {
    // create image, write to buffered output stream

    return Response.ok().entity(stream).build();
  }
}

Будет ли это работать?Должен ли я позаботиться о правильных заголовках (Content-Type), или это сделано с помощью аннотации @Produces?Можно вывести изображение как Response?Можно ли построить Response из потока?

1 Ответ

8 голосов
/ 21 апреля 2011

Взгляните на http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e323:

 @GET
 @Path("/images/{image}")
 @Produces("image/*")
 public Response getImage(@PathParam("image") String image) {
     File f = new File(image);

     if (!f.exists()) {
         throw new WebApplicationException(404);
     }

     String mt = new MimetypesFileTypeMap().getContentType(f);
     return Response.ok(f, mt).build();
 }
...