在Java中将2D数组转换为图像?

在Java中将2D数组转换为图像?,java,image,bufferedimage,Java,Image,Bufferedimage,我有2D数组,它只有1-0个值,但它的类型是int[] 现在我想把这个数组转换成黑白二值图像。但是我找不到适合我的问题的答案。我搜索过谷歌和这个网站。有人能帮我吗 我已经尝试了以下代码,但是它 String path = "C:\\Users\\Cyrus\\Desktop\\test.jpg"; BufferedImage image = new BufferedImage(b.length, b[0].length, BufferedImage.TYPE_INT_RGB);

我有2D数组,它只有1-0个值,但它的类型是int[]

现在我想把这个数组转换成黑白二值图像。但是我找不到适合我的问题的答案。我搜索过谷歌和这个网站。有人能帮我吗

我已经尝试了以下代码,但是它

   String path = "C:\\Users\\Cyrus\\Desktop\\test.jpg";
    BufferedImage image = new BufferedImage(b.length, b[0].length, BufferedImage.TYPE_INT_RGB);
    for (int x = 0; x < b.length; x++) { // b is my 2D array
        for (int y = 0; y < b[x].length; y++) {
            image.setRGB(x, y, b[x][y]);
        }
    }

    File ImageFile = new File(path);
    try {
        ImageIO.write(image, "jpg", ImageFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
//在我修改代码之后

String path = "C:\\Users\\Cyrus\\Desktop\\test.jpg";
    BufferedImage image = new BufferedImage(a.length, a[0].length, BufferedImage.TYPE_INT_RGB);
    for (int x = 0; x < a.length; x++) {
        for (int y = 0; y < a[x].length; y++) {
             int value ;
             if(a[x][y]==1)  value = new Color(255,255,255).getRGB();
             else value = new Color(0,0,0).getRGB();
            image.setRGB(x, y, value);

        }
    }

    File ImageFile = new File(path);
    try {
        ImageIO.write(image, "jpg", ImageFile);
    } catch (IOException e) {
        e.printStackTrace();
    }

但是它返回了错误的图像

你能更具体地说明你得到的结果吗?它抛出了一些异常吗?或者程序正常完成,但没有产生您想要的结果

您应该注意到,在这里您想要使用二进制图像,那么选择JPG有什么具体的原因吗?正如我所知,JPG并不是像bmp那样的颜色三元组RGB的本地表示。jpeg文件是数据序列的容器,其中的头文件EXIF,QT,…,中包含大量信息,并用标记标记。要直接处理数组中的像素值,必须对jpg文件中的数据序列进行解码,然后在播放图像后,主图像数据将再次编码为jpg流


为了直接播放像素值,我建议您使用其他格式,如TGA、png,

ah,它返回黑色图像尝试打印出BuffereImage的实例,然后您就会明白原因。要将本机原始数据矩阵传递给BufferImage类型的对象,然后使用该BufferImage写入image并不是那么容易。如果BufferImage是读取另一个图像的结果,则可以毫无问题地保存它。如果你想玩像那样的像素,我建议你试试openCV和Java。语法也非常简单和直观。