如何使用GWT将PNG图像数据作为解码字节数组?

时间:2011-08-03 01:25:33

标签: gwt png

使用GWT我想读取PNG图像并将数据作为解码字节数组访问。

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

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

2 个答案:

答案 0 :(得分:1)

自从我用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();

答案 1 :(得分:1)

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

似乎gwt支持最新版本中的canvas元素,因此您可以使用纯Java将其归档: http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/canvas/dom/client/ImageData.html

相关问题