问题
Is it possible to create a PNG image and output it straight to the browser as part of a JAX-RS resource?
Something like this:
@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();
}
}
Would this work? Do I have to take care of the correct headers (Content-Type), or is this done by the @Produces
annotation? Can output an image as a Response
? Can I build a Response
from a stream?
回答1:
Take a look at 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();
}
来源:https://stackoverflow.com/questions/5736973/dynamically-create-image-from-jax-rs-servlet