在RESTeasy的原始图像

Pet*_*Mmm 7 java image resteasy

我有RESTeasy的这项服务:

@GET
@Path("/{name}")
@Produces("image/jpeg")
public BufferedImage get(@PathParam("name") String name) {

    Monitor m = Monitor.getMonitor(name);

    if (m == null) {
        return null;
    }

    return m.getImage();
}
Run Code Online (Sandbox Code Playgroud)

然后我得到了请求

Could not find MessageBodyWriter for response object of type: java.awt.image.BufferedImage of media type: image/jpeg
Run Code Online (Sandbox Code Playgroud)

是否有任何"直接方式"将图像纳入响应?


感谢@Robert的指示.这里的工作代码:

@GET
@Path("/{name}")
@Produces("image/jpeg")
public byte[] get(@PathParam("name") String name) {

    Monitor m = Monitor.getMonitor(name);

    if (m == null) {
        return null;
    }

    ByteArrayOutputStream bo = new ByteArrayOutputStream(2048);
    try {
        ImageIO.write(m.getImage(),"jpeg",bo);
    } catch (IOException ex) {
        return null;
    }

    return bo.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 8

你应该尝试

  • 编码BufferedImage为JPG.看看课程javax.imageio.ImageIO
  • 声明你的方法返回一个 byte[]
  • 确保您的应用程序始终在未启动的服务器上运行java.awt.headless=true(即没有图形子系统)

如果有效,请告诉我们,因为我不知道它是否会,现在不能自己尝试.