Java相当于JavaScript的Canvas getImageData

我正在将一个
HTML5的Canvas示例移植到Java,到目前为止一直很好,直到我进入这个函数调用:

Canvas.getContext('2d').getImageData(0, 0, 100, 100).data

我google了一会儿,发现了画布规范的这一页

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#pixel-manipulation

阅读之后,我在下面创建了这个函数:

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 [].

点赞