2011-02-07 61 views
4

我目前正在使用Cobra:Java HTML呈现器&解析器呈现基于java应用程序中用户选择动态生成的HTML页面。使用Cobra的Java HTML呈现

在我的应用程序中,用户可以选择数百个项目进行选择。项目以特殊的唯一颜色符号的形式显示,用户可以选择多个项目。

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

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

做到这一点的一种方法是将BufferedImage保存为使用ImageIO.write的文件,然后在加载到HTMLPanel的动态生成的HTML文档中包含img html标记。不幸的是,这是不可接受的,因为用户可能会选择数百个符号,反过来会导致数百个ImageIO.write调用,并且会降低我的应用程序的性能。

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

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

不幸HTMLPanel似乎忽略数据URI方案。

有谁知道解决方案吗?

+0

但是,如果你在你的应用程序中显示图像,他们必须在文件的某个地方,对不对?你为什么不指向那里? – Jules 2011-02-07 11:39:09

+0

这些符号数量众多,可以在颜色上有所不同,因此它们也可以通过应用程序进行绘制,而不是以文件形式存储,但仅存在于内存中。 – Tractatus 2011-02-07 18:44:38

回答

1

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