【问题标题】:Stream dynamic BufferedImage to website将动态 BufferedImage 流式传输到网站
【发布时间】:2017-10-09 11:53:37
【问题描述】:

我在生成的 java 中有一个动态 BufferedImage。我希望能够将 BufferedImage 发送到 Web 前端。我希望 Web 前端能够以设定的时间间隔处理刷新此图像。此外,我将需要键盘和鼠标回调。我正在研究 HTML5 Canvas,但它似乎并不真正支持我正在做的事情。

基本上,尝试制作一个在服务器端生成的游戏,然后以 5fps 之类的速度向客户端发送该游戏的 BufferedImage。

【问题讨论】:

  • 你能详细说明吗?

标签: java html web-services html5-canvas


【解决方案1】:

您可以使用Base64.Encoder 类在服务器端使用Java 对BufferedImage 进行编码。这会将图像转换为 base64 String,可以在前端推入 img 标签的 src

您需要将图像临时保存到文件中,但这应该可以完成工作:

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。

【讨论】:

  • 这样可以刷新图片吗?
  • @CharlesDuncan 只要您不断将更新后的String 发送给客户。我假设您在前端使用 Angular?
  • 我目前正在为这个项目使用 Vaadin。
  • 我不熟悉那个框架,但如果它有 html 插值,那应该没问题。你有办法在JS中用变量设置标签的属性吗?
  • 是的,我应该能够做到。这个方法有没有鼠标/键盘回调的能力?
猜你喜欢
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多