如何使用GWT以解码字节数组的形式获取PNG图像数据?

如何使用GWT以解码字节数组的形式获取PNG图像数据?,gwt,png,Gwt,Png,使用GWT,我希望读取PNG图像,并将数据作为解码字节数组进行访问 在客户端,我使用ImageBundle获取图像,然后实例化一个图像并调用setUrl 此时,如何从映像中获取映像字节数组?我已经有一段时间没有用Java直接执行文件I/o了,但下面是一些基于我的一些旧代码的内容: InputStream in = this.getClass().getResourceAsStream("/com/path/to/file.png"); ByteArrayOutputStream out = ne

使用GWT,我希望读取PNG图像,并将数据作为解码字节数组进行访问

在客户端,我使用ImageBundle获取图像,然后实例化一个图像并调用setUrl


此时,如何从映像中获取映像字节数组?

我已经有一段时间没有用Java直接执行文件I/o了,但下面是一些基于我的一些旧代码的内容:

InputStream in = this.getClass().getResourceAsStream("/com/path/to/file.png");
ByteArrayOutputStream out = new ByteArrayOutputStream();
int readByte = 0;
while ((readByte = in.read()) != -1) {
    out.write(readByte);
}
out.flush();
byte[] bytes = out.toByteArray();

我不确定是否没有跨浏览器的方法来获取图像的字节数组,因为我们毕竟是在JavaScript领域。您可以创建一个新的canvas元素,将图像添加到canvas.context2D并读取canvas.context2D.data属性,以获得每个像素的RGBA值的数组

似乎gwt在最新版本中支持canvas元素,因此您可以在纯Java中存档它:

作为上载,或从类路径或文件系统?不是上载。我将从服务器提供该文件。GWT模拟JRE的一个子集,ByteArrayOutputStream不是其中的一部分。