2011-02-07 66 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。