给定一个图像文件,比如说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.... }
提前致谢!
您需要以形式获取打包像素值int,然后可以使用Color(int, boolean)其构建颜色对象,从中提取RGBA值,例如…
int
Color(int, boolean)
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(); } } }
这不是最有效的方法,但它是最简单的方法之一