2012-04-12 7 views
1

私は署名されたJavaアプレットを使用して、ユーザーのファイルシステムから画像を読み込みます。
次に、このイメージをアプレットが実行されているWebサイトに表示します。javaアプレットからhtmlへ画像を渡す

私はアプレットとJavaScriptの間で通信する方法を知っていますが、パラメータとして文字列と数値のみを使用しました。

画像オブジェクトをどのように扱い、ウェブサイトに表示するにはどうすればよいですか?

必要に応じて、JavaScriptと一致するようにアプレットのフォーマットを変換することができます。

編集:
JSObjectからの呼び出しでjavaからjavascriptへImageオブジェクトを渡しました。 Chromeはその呼び出しを無視し、Firefoxのクラッシュを起こします。

答えて

3

イメージをBase 64としてエンコードし、JSにStringとして渡し、data:image/gif;フォームURLを使用してWebページに表示することができます。 J2SEには変換のための組み込みメソッドがないので、独自のbase64エンコーダをロールバックするか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から取られます。後でのJREで

  1. (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)のパフォーマンスに関する経験はありますか?それはgifとして他のフォーマットでも使えますか? – Shylux

+0

1)いいえ、アニメーションのためにそれをしない限り、うまくいくはずです。 2)私はそう信じています。 –

関連する問題