如何将1D字节数组转换为包含位图的2D字节数组?

我已经使用了LockBits和UnlockBits函数,并将Image的字节数组转换为1D数组。 (仅考虑黑白/二值化图像)

有没有办法将它带到2Darrays(图像高度和宽度的大小)? 所以我可以将数组转换为“.txt”文件并查看它?

我用来将图像转换为1D数组的代码如下:

Public void function(Bitmap image){ { byte[] arr1D; byte[] arr2D; BitmapData data = image.LockBits(new Rectangle(0, 0, img_w, img_h), ImageLockMode.ReadOnly, image.PixelFormat); try { IntPtr ptr = data.Scan0; int bytes = Math.Abs(data.Stride) * image.Height; byte[] rgbValues = new byte[bytes]; arr1D = rgbValues; Marshal.Copy(ptr, rgbValues, 0, bytes); } finally { image.UnlockBits(data); } } 

由于图像是二进制的,因此字节数组的值仅为255和0。

有没有任何方法/代码,我可以逐行提取像素到2D数组,而不是将整个图像提取到一维数组,我可以将其写入文本文件,稍后再看?

编程语言: C#

示例:(如果值255替换为1)

结果输出: 1D数组:(6px X 6px图像)

 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 

预期输出: 2D数组:(6px X 6px图像)

 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 

有人可以帮我在C#中使用它的代码吗?

这是一个简单的函数,它采用1d int数组和你希望数据分成的每一行的大小,并返回一个2d数组。

 public int[,] ConvertArray(int[] Input, int size) { int[,] Output = new int[(int)(Input.Length/size),size]; System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\OutFile.txt"); for (int i = 0; i < Input.Length; i += size) { for (int j = 0; j < size; j++) { Output[(int)(i / size), j] = Input[i + j]; sw.Write(Input[i + j]); } sw.WriteLine(""); } sw.Close(); return Output; } 

我没有添加任何validation来确保输入数组完全可以被大小整除,如果有必要,你需要添加它。

我确实添加了将数据写入文件的代码。