Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JAX-RSservlet动态创建图像_Java_Image_Jax Rs_Dynamic Image Generation - Fatal编程技术网

Java 从JAX-RSservlet动态创建图像

Java 从JAX-RSservlet动态创建图像,java,image,jax-rs,dynamic-image-generation,Java,Image,Jax Rs,Dynamic Image Generation,是否可以创建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 ou

是否可以创建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();
  }
}
这样行吗?我必须处理正确的标题(内容类型),还是由
@products
注释完成?能否将图像输出为
响应
?我可以从流构建
响应吗?

看一下:


谢谢。我通过将图像创建为字节输出流并从中生成响应,成功地实现了类似的操作。或者,您可以从资源方法返回任何InputStream实现,您的JAX-RS实现应该能够从那里获取它。@Hank,作为字节数组提前读取图像是浪费内存的。对于大型映像,这将导致内存管理问题。最好是返回一个InputStream,让容器担心将流传输给调用者。@Isaac,绝对,我完全同意(我现在有了更多的经验)。@Socrates确实如此。
 @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();
 }