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

How to best generate a Image from existing PNGs?

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

java.awt.Image is not supported by Google App Engine's Java runtime environment

java/gwt/App 引擎中是否还有其他可用的东西可供我使用,或者我是否必须使用其他库?如果是这样,您是否可以建议不依赖于 App Engine 不支持的内容?

背景介绍: 我正在编写一个多人浏览器小游戏,大约有 space 艘船。用户可以从不同的模块(以 PNG 提供)构建他的飞船。在一张地图(Canvas class)上,我想显示其他用户的船只,应该是他们建造的船只的最小化版本。所以我的想法是在构建时生成并保存图像(这应该不会经常发生),然后将其交付给其他用户。

我会考虑 Google 中的 Image API and if necessary the File System API - 它们很棒且易于使用。认为您应该使用这些工具来实现您的目标。

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

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

// 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 问题。