gpt4 book ai didi

java - 如何从 Jersey REST 服务方法返回 PNG 图像到浏览器

转载 作者:IT老高 更新时间:2023-10-28 20:35:49 24 4
gpt4 key购买 nike

我有一个运行 Jersey REST 资源的 Web 服务器,我想知道如何获取浏览器 img 标签的图像/png 引用;在提交表单或获得 Ajax 响应之后。添加图形的图像处理代码正在工作,只需要以某种方式返回即可。

代码:

@POST
@Path("{fullsize}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("image/png")
// Would need to replace void
public void getFullImage(@FormDataParam("photo") InputStream imageIS,
@FormDataParam("submit") String extra) {

BufferedImage image = ImageIO.read(imageIS);

// .... image processing
//.... image processing

return ImageIO. .. ?

}

干杯

最佳答案

我不认为在 REST 服务中返回图像数据是个好主意。它占用了应用服务器的内存和 IO 带宽。最好将该任务委托(delegate)给针对这种传输进行了优化的适当 Web 服务器。您可以通过向图像资源发送重定向来完成此操作(作为带有图像 URI 的 HTTP 302 响应)。这当然假设您的图像被安排为网络内容。

话虽如此,如果您决定确实需要从 Web 服务传输图像数据,您可以使用以下(伪)代码来完成:

@Path("/whatever")
@Produces("image/png")
public Response getFullImage(...) {

BufferedImage image = ...;

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
byte[] imageData = baos.toByteArray();

// uncomment line below to send non-streamed
// return Response.ok(imageData).build();

// uncomment line below to send streamed
// return Response.ok(new ByteArrayInputStream(imageData)).build();
}

添加异常处理等

关于java - 如何从 Jersey REST 服务方法返回 PNG 图像到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com