小编典典

Java:从缓冲图像获取RGBA作为整数数组

java

给定一个图像文件,比如说PNG格式,我如何获得表示位于第i行第j列的像素的int [r,g,b,a]数组?

到目前为止,我从这里开始:

private static int[][][] getPixels(BufferedImage image) {

    final byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
    final int width = image.getWidth();
    final int height = image.getHeight();

    int[][][] result = new int[height][width][4];

    // SOLUTION GOES HERE....
}

提前致谢!


阅读 288

收藏
2020-11-30

共1个答案

小编典典

您需要以形式获取打包像素值int,然后可以使用Color(int, boolean)其构建颜色对象,从中提取RGBA值,例如…

private static int[][][] getPixels(BufferedImage image) {
    int[][][] result = new int[height][width][4];
    for (int x = 0; x < image.getWidth(); x++) {
        for (int y = 0; y < image.getHeight(); y++) {
            Color c = new Color(image.getRGB(i, j), true);
            result[y][x][0] = c.getRed();
            result[y][x][1] = c.getGreen();
            result[y][x][2] = c.getBlue();
            result[y][x][3] = c.getAlpha();
        }
    }
}

这不是最有效的方法,但它是最简单的方法之一

2020-11-30