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

C# 如何将1D字节数组转换为包含位图的2D字节数组?,c#,arrays,image-processing,bitmap,bytearray,C#,Arrays,Image Processing,Bitmap,Bytearray,我已经使用了LockBits和UnlockBits函数,并将图像的字节数组转换为1D数组。(仅考虑黑白/二值化图像) 有没有办法将其转换为2D阵列(图像高度和宽度的大小)?这样我就可以将数组写入一个“.txt”文件并查看它了 我用来将图像放入1D数组的代码如下: Public void function(Bitmap image){ { byte[] arr1D; byte[] arr2D; BitmapData data = image.LockBits(new Rectangle(0, 0

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

有没有办法将其转换为2D阵列(图像高度和宽度的大小)?这样我就可以将数组写入一个“.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

除了将整个图像提取到一维数组,是否有任何方法/代码可以将像素逐行提取到二维数组,然后将其写入文本文件,稍后再查看

编程语言:C#

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

结果输出: 1D阵列:(6px 6px图像)

预期产出: 2D阵列:(6px 6px图像)


有人能帮我看一下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;
}
public int[,]ConvertArray(int[]输入,int大小)
{
int[,]输出=新的int[(int)(Input.Length/size),size];
System.IO.StreamWriter sw=新的System.IO.StreamWriter(@“C:\OutFile.txt”);
for(int i=0;i
我没有添加任何验证来确保输入数组可以被大小整除,如果需要,您需要添加它


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

这里有一个简单的函数,它接受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;
}
public int[,]ConvertArray(int[]输入,int大小)
{
int[,]输出=新的int[(int)(Input.Length/size),size];
System.IO.StreamWriter sw=新的System.IO.StreamWriter(@“C:\OutFile.txt”);
for(int i=0;i
我没有添加任何验证来确保输入数组可以被大小整除,如果需要,您需要添加它

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

这非常简单

private int[][]conver1dTo2d(int[]arr,int w,int h){
int[][]答案=新的int[h][w];
对于(inti=0;i这很简单

private int[][]conver1dTo2d(int[]arr,int w,int h){
int[][]答案=新的int[h][w];

对于(int i=0;iYou可以将1D数组写入N维文件;只需查看它们即可。在第一行写入W个条目,然后添加换行,然后在下一行写入W个条目,依此类推,直到写入H行。写入的条目总数为W*H(或1D数组的大小)@user2246674:请您帮我键入代码段好吗?您可以在N维文件中写入1D数组;只需查看它们。在第一行写入W个条目,然后添加新行,然后在下一行写入W个条目,依此类推,直到写入H行。写入的条目总数为W*H(或1D数组的大小)。@user2246674:您能帮我键入代码段吗?谢谢:)我试试这个谢谢:)我试试这个
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;
}