我正在将一个
HTML5的Canvas示例移植到Java,到目前为止一直很好,直到我进入这个函数调用:
Canvas.getContext('2d').getImageData(0, 0, 100, 100).data
我google了一会儿,发现了画布规范的这一页
阅读之后,我在下面创建了这个函数:
public int[] getImageDataPort(BufferedImage image) {
int width = image.getWidth();
int height = image.getHeight();
int[] ret = new int[width * height * 4];
int idx = 0;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int color = image.getRGB(x, y);
ret[idx++] = getRed(color);
ret[idx++] = getGreen(color);
ret[idx++] = getBlue(color);
ret[idx++] = getAlpha(color);
}
}
return ret;
}
public int getRed(int color) {
return (color >> 16) & 0xFF;
}
public int getGreen(int color) {
return (color >> 8) & 0xFF;
}
public int getBlue(int color) {
return (color >> 0) & 0xFF;
}
public int getAlpha(int color) {
return (color >> 24) & 0xff;
}
Java Graphics API上有任何内置此函数的类,或者我应该使用我创建的那个类?
最佳答案 我认为您在标准Java API中找到的最接近的东西是
Raster
类.您可以通过BufferedImage.getRaster获取
WritableRaster
(用于低级图像处理).然后,Raster类提供诸如
getSamples
之类的方法,这些方法用图像数据填充int [].