如何将2d字节[][]数组(二进制图像数组)转换为图像java

如何将2d字节[][]数组(二进制图像数组)转换为图像java,java,arrays,image-processing,2d,Java,Arrays,Image Processing,2d,您好,我想将2D字节[]数组转换为图像。 我已将黑白图像转换为二维字节[]数组,并希望将二维字节数组转换为图像。将二维数组转换为一维数组 要将字节-数组写入缓冲图像,它必须是(据我所知)一维数组。您可以使用以下简单循环将二维字节数组(byte[][])转换为一维字节数组(byte[]): /* * Create a new 1-dimensional byte array which will hold the result * Set its size to the item count

您好,我想将2D字节[]数组转换为图像。 我已将黑白图像转换为二维字节[]数组,并希望将二维字节数组转换为图像。

将二维数组转换为一维数组 要将
字节
-数组写入
缓冲图像
,它必须是(据我所知)一维数组。您可以使用以下简单循环将二维字节数组(
byte[][]
)转换为一维字节数组(
byte[]
):

/*
 * Create a new 1-dimensional byte array which will hold the result
 * Set its size to the item count in the pixelData array
 */
byte[] oneDimArray = new byte[pixelData.length * pixelData[0].length];

/*
 * Loop through the "horizontal" row in the pixelData array
 */
for(int x = 0; x < pixelData.length; x++) {
    /*
     * Loop through each item in the current vertical row
     */
    for(int y = 0; y < pixelData[x].length; y++) {
        /*
         * Set each item in the 1-dimensional array to the corresponding
         * item in the 2-dimensional array
         */
        oneDimArray[x + y * pixelData.length] = twoDimArray[x][y];
    }
}
()


现在您可以将
缓冲图像
用于任何您想要的东西,希望它看起来像转换之前一样。

每个项目包含什么?RGB值?我将黑白图像转换为二进制图像,然后转换为字节[][]数组,每个项目包含1或0是在Java程序中转换的
缓冲图像
/
图像
对象,还是使用其他工具进行转换?它是缓冲图像,然后转换为字节[][]Java中的数组您是否自己将每个RGB值转换为二进制值?如果可能的话,只需运行用于将RGB“向后”转换为二进制的代码。如果使用库,请寻找另一种方法(函数)将二进制转换为RGB,而不是相反的方法,然后在RGB像素数据数组中使用中的代码。
ImageIO
希望字节采用文件格式,而不是原始RGB像素。你的最后一段不起作用。啊,但是看看我提供的链接。我提供了,你也应该这样做。:-)引用:“[以下示例]将读取名为“darksouls.jpg”的图像文件,将其转换为字节数组,然后重用转换后的字节数组…”。您引用的链接以JPEG格式的字节开始,而不是原始像素。这就是它工作的原因。但如果您有疑问,请不要相信我的话。您自己试试。@haraldK啊,对不起。我来看看
ByteArrayInputStream byteIn = new ByteArrayInputStream(oneDimArray);
BufferedImage finalImage = ImageIO.read(byteIn);