java如何将int[]]转换为BuffereImage
我有一个2D整数数组,它是从BuffereImage方法getRGB获得的。 当我尝试将2D整数数组转换回BufferdImage时,只得到一张黑色图片 这种方法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 &
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);
这有用吗??矩阵值的格式错误。你从哪里弄来的?你能显示代码吗?这有用吗??矩阵值的格式错误。你从哪里弄来的?你能显示代码吗?这是解决方案:这是解决方案: