2012-04-12 60 views
1

我正在使用已簽名的java applet從用戶的文件系統加載圖像。
然後,我想在applet運行的網站上顯示這個圖像。將圖像從java applet傳遞到html

我知道如何在applet和JavaScript之間進行通信,但我只使用字符串和數字作爲參數。

如何處理圖像對象,以及如何在網站上顯示它們?

如果需要,我可以轉換applet中的格式以匹配JavaScript。

編輯:
我通過JSObject調用將Image對象從java傳遞給了javascript。 Chrome忽略了通話和Firefox崩潰..

回答

3

您可能會將圖像編碼爲Base 64,將其作爲字符串傳遞給JS,並使用data:image/gif;表單URL在網頁中顯示它。因爲J2SE沒有內置的轉換方法,所以您需要'自己推出'base 64編碼器或找到一個API。

它可能在HTML中看起來像這樣。

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/ 
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp 
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" 
width="16" height="14" alt="embedded folder icon"> 

E.G.取自Inline Images with Data URLs

  1. 在以後的JRE(一旦JAXB引入)看起來使用DatatypeConverter.printBase64Binary(byte[])是這樣的:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
try { 
    ImageIO.write(image, "png", baos); 
} catch (IOException e) { 
    showError(e); 
    e.printStackTrace(); 
} 
String imageString = "data:image/png;base64," + 
    DatatypeConverter.printBase64Binary(baos.toByteArray()); 
+0

嗯這可能工作。你有大型圖像(1600x1200)的性能經驗嗎?這是否與其他格式一樣工作? – Shylux 2012-04-13 06:58:25

+0

1)不,但除非做動畫,否則應該沒問題。 2)我相信如此。 – 2012-04-13 07:03:50