java如何将int[]]转换为BuffereImage

java如何将int[]]转换为BuffereImage,java,bufferedimage,Java,Bufferedimage,我有一个2D整数数组,它是从BuffereImage方法getRGB获得的。 当我尝试将2D整数数组转换回BufferdImage时,只得到一张黑色图片 这种方法 BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int i = 0; i < matrix.length; i++) { for (int j = 0; j &

我有一个2D整数数组,它是从BuffereImage方法getRGB获得的。 当我尝试将2D整数数组转换回BufferdImage时,只得到一张黑色图片

这种方法

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[0].length; j++) {
            int pixel=matrix[i][j];
            System.out.println("The pixel in Matrix: "+pixel);
            bufferedImage.setRGB(i, j, pixel);
            System.out.println("The pixel in BufferedImage: "+bufferedImage.getRGB(i, j));
        }
    }
为什么每个像素都是16777216

谢谢

更新

返回整数矩阵的方法

public int[][] getMatrixOfImage(BufferedImage bufferedImage) {
    int width = bufferedImage.getWidth(null);
    int height = bufferedImage.getHeight(null);
    int[][] pixels = new int[width][height];
    for (int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            pixels[i][j] = bufferedImage.getRGB(i, j);
        }
    }

    return pixels;
}

你所有的像素看起来都是黑色的,有不同的alpha值。您必须使用TYPE_INT_ARGB以避免丢失alpha通道。

所有像素似乎都是具有不同alpha值的黑色。您必须使用TYPE_INT_ARGB才能不丢失alpha通道。

如果您使用TYPE_INT_RGB,可以通过以下方式进行:

BufferedImage.getRaster().setPixels(xCord, YCord, Width, Height, IntArray);
如果您使用的是类型_INT_RGB,可以通过以下方式执行:

BufferedImage.getRaster().setPixels(xCord, YCord, Width, Height, IntArray);

这有用吗??矩阵值的格式错误。你从哪里弄来的?你能显示代码吗?这有用吗??矩阵值的格式错误。你从哪里弄来的?你能显示代码吗?这是解决方案:这是解决方案: