我正在使用类似于HTML 5画布的GWT画布。我的目标是从画布中获取像素颜色。
我通过使用存储图像数据的CanvasPixelArray
找到了一种方法。
图像数据存储像素信息。
我正在使用以下代码从画布中获取像素颜色:
CanvasPixelArray imageData = canvas.getRendererCanvas().getContext2d().getImageData(0, 0, canvas.getWidth(), canvas.getHeight()).getData();
int length = imageData.getLength() / 4;
int index = 0, r, g, b, a;
for (int i = 0; i < length; i++) {
index = 4 * i;
r = imageData.get(index); //red
g = imageData.get(++index); //green
b = imageData.get(++index); //blue
a = imageData.get(++index); //alpha
if (r == 255 || g == 255 || b == 255) { // pixel is white
System.out.println(r+","+g+","+b+","+a);
}
}
但主要问题是它工作太慢而且性能下降。这是上面代码工作正常的主要问题。
那么从画布获取颜色信息的最佳方式是什么?
非常感谢任何帮助。谢谢。