如何在不将图像写入磁盘的情况下在 JSF 中显示缓冲图像?

How to display buffered image in JSF without writing image on disk?

我有一个缓冲图像,我需要在 JSF 页面中显示它。 有没有可以直接显示缓冲图像的 UI 组件?我正在使用 JSF 2.2。

如果您只有缓冲图像,您可以使用 Omnifaces 库,它允许您通过将 byte[] 传递给组件

来渲染图像
<o:graphicImage value="#{bean.image}" dataURI="true" />

如果您有缓冲图像,您可以像这样转换为字节数组:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write([image],[image_extension], baos);
byte[] imageToPassAsValueAttr = baos.toByteArray();

您还可以创建一个 servlet 来接收图像 ID 作为获取请求,从那时起您可以获取参数值、查找资源并将图像内容写入响应。

@BalusC 有一个很好的例子here