2017-05-10 6 views
1

私は生成しているJavaで動的なBufferedImageを持っています。 BufferedImageをWebフロントエンドに送信できるようにしたい。私は、Webフロントエンドがこのイメージを一定の間隔でリフレッシュできるようにしたい。また、キーボードとマウスのコールバックが必要になります。私はHTML5 Canvasを研究していましたが、私がやっていることを実際にサポートしていないようです。動的なストリームBufferedImage from website

基本的に、サーバーサイドで生成されたゲームを作成しようとすると、クライアントは5fpsのようなものでそのゲームのBufferedImageを送信します。

+0

詳しいことはできますか? –

答えて

0

Base64.Encoderクラスを使用すると、サーバ側のBufferedImageをJavaでエンコードできます。これにより、フロントエンドのimgタグのsrcに押し込むことができるbase64 Stringにイメージを変換します。

あなたは一時的にファイルに画像を保存する必要がありますが、これは仕事をする必要があります。

Base64.Encoder encoder = Base64.getEncoder(); 
BufferedImage bi = generateYourImage(); 
ImageIO.write(bi, yourImageExtension, new File(".tmp."+yourImageExtension)); 
String base64Str = "data:image/"+yourImageExtension+";base64,"+ encoder.encode(Files.readAllBytes(Paths.get(".tmp."+yourImageExtension"))); 

次に、あなたのクライアントにbase64Strを送信し、imgタグのsrc ATTRに押し込みます。

+0

これで画像をリフレッシュできますか? –

+0

@CharlesDuncan更新された 'String'をクライアントに送信し続ける限り。フロントエンドでAngularを使用していると仮定していますか? – CraigR8806

+0

私は現時点でこのプロジェクトにVaadinを使用しています。 –