使用GWT我想读取PNG图像并将数据作为解码字节数组访问。
在客户端,我使用ImageBundle获取图像,然后实例化一个Image并调用setUrl。
此时,如何从图像中获取图像字节数组?
答案 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