我目前正在使用Cobra:Java HTML Renderer&Parser渲染HTML页面,该页面根据Java应用程序中的用户选择动态生成。

在我的应用程序中,用户可以选择数百种项目。这些项目以特殊的唯一彩色符号形式显示,并且用户可以选择一个以上的项目。

一旦选择了许多项目,它们的书面描述就会动态生成并格式化为包含css2和html4标签,并加载到Cobra HTMLPanel中进行显示。

我希望在HTMLPanel中显示符号的图像以及对项目的书面描述。

一种方法是使用ImageIO.write将BufferedImage保存到文件中,然后在动态生成的HTML文档中包含img html标签,并将其加载到HTMLPanel中。不幸的是,这是 Not Acceptable ,因为用户可能选择了数百个符号,而这又会导致数百个ImageIO.write调用,并且我的应用程序性能会出现不可思议的下降。

另一种方法是将BufferedImage转换为Base64编码,然后将编码直接放入HTML文档,如下所示

<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />

不幸的是,HTMLPanel似乎忽略了数据URI方案。

有人知道解决方案吗?

最佳答案

使用诸如Jetty之类的嵌入式servlet容器。将URL指向“http://localhost:somePort/imageId”,然后从内存中提供这些URL。

09-25 16:17