如何从现有的PNG中最好地生成图像?

时间:2015-08-19 21:14:41

标签: java google-app-engine gwt

技术问题: 在App Engine服务器上,我想通过加载和处理许多其他PNG来生成图像(理想情况下是PNG,但不一定)。然后,我想将此图像传输到客户端,该客户端使用GWT进行编程。 我尝试使用java.awt库,但是我得到了

  

Google App Engine的Java运行时环境

不支持java.awt.Image

我可以使用java / gwt / App Engine中的其他任何内容来执行此操作,还是必须使用其他库?如果是这样,您是否可以建议哪些内容与App Engine不支持的内容无关?

感兴趣的人的背景: 我正在写一个关于太空飞船的小型多人游戏浏览器游戏。用户可以从不同的模块构建他的船(可用作PNG)。在地图(Canvas类)上,我想显示来自其他用户的船只,这些船只应该是他们构造的船的最小化版本。所以我的想法是在构建时生成并保存图像(这应该不经常发生),然后将其传递给其他用户。

2 个答案:

答案 0 :(得分:1)

Image API工作正常,但转移图像是下一个问题:GWT客户端无法使用com.google.appengine.api.images.Image,我必须在这里使用com.google.gwt.user.client.ui.Image

一种可能的方法是将图像编码为Base64并将其作为String传输。服务器端:

// image is an instance of com.google.appengine.api.images.Image
return "data:image/png;base64," + Base64.encodeToString(image.getImageData());

在客户端,可以轻松处理此字符串:

com.google.gwt.user.client.ui.Image image = new Image(theBase64String);

应该注意的是,许多Base64实现产生了构造函数com.google.gwt.user.client.ui.Image不理解的编码。有关详细信息,请参阅this问题。

答案 1 :(得分:0)

我会考虑Image API,如果有必要,我会考虑来自Google的File System API - 它们很棒且易于使用。认为你应该用这些工具完成你的目标。