c#读/写像素颜色不工作

c#读/写像素颜色不工作,c#,bitmap,pixels,C#,Bitmap,Pixels,我正在尝试创建一个简单的图像格式,它将每个像素的argb颜色写入一个文件,我使用此代码获取并设置所有 List<Color> pixels = new List<Color>(); Bitmap img = new Bitmap("*imagePath*"); for (int i = 0; i < img.Width; i++) { for (int j = 0; j < img.Height; j++) { Color pixel = img.G

我正在尝试创建一个简单的图像格式,它将每个像素的argb颜色写入一个文件,我使用此代码获取并设置所有

List<Color> pixels = new List<Color>();
Bitmap img = new Bitmap("*imagePath*");

for (int i = 0; i < img.Width; i++)
{
for (int j = 0; j < img.Height; j++)
{
    Color pixel = img.GetPixel(i,j);
    pixels.Add(pixel);
}
} 
如果我试着读它:

        OpenFileDialog op = new OpenFileDialog();
        op.ShowDialog();
        StreamReader sr = new StreamReader(op.FileName);
        int x = 1920;
        int y = 1080;
        Bitmap img = new Bitmap(x,y);
        for (int i = 0; i < img.Width; i++)
        {
            string rl = sr.ReadLine();
            for (int j = 0; j < img.Height; j++)
            {
                img.SetPixel(i, j, Color.FromArgb(Int32.Parse(rl)));
            }
        }
        pictureBox1.Image = img;
OpenFileDialog op=newopenfiledialog();
op.ShowDialog();
StreamReader sr=新的StreamReader(op.FileName);
int x=1920;
int y=1080;
位图img=新位图(x,y);
对于(int i=0;i
但是从这个bmp文件中,

我得到这个输出:

有人知道如何解决这个问题吗


提前感谢。

当您写入像素时,您将在单独的一行中写入每个像素。但是,在读取时,您是在每列读取一行,然后对列的每一行使用相同的颜色值

相反,在最里面的循环中调用
ReadLine

for (int i = 0; i < img.Width; i++)
{           
    for (int j = 0; j < img.Height; j++)
    {
        string rl = sr.ReadLine();
        img.SetPixel(i, j, Color.FromArgb(Int32.Parse(rl)));
    }
}
for(int i=0;i

无需添加,这种图像格式在空间方面效率极低,在当前的实现中,其读写性能也非常低。明智的做法是将其仅用作学习练习。

当您写入像素时,您将在单独的一行中写入每个像素。但是,在读取时,您是在每列读取一行,然后对列的每一行使用相同的颜色值

相反,在最里面的循环中调用
ReadLine

for (int i = 0; i < img.Width; i++)
{           
    for (int j = 0; j < img.Height; j++)
    {
        string rl = sr.ReadLine();
        img.SetPixel(i, j, Color.FromArgb(Int32.Parse(rl)));
    }
}
for(int i=0;i

无需添加,这种图像格式在空间方面效率极低,在当前的实现中,其读写性能也非常低。你最好只把它作为一种学习练习。

你能举个例子说明如何做吗?好的,谢谢,它奏效了!为便于阅读,请将答案改写。您能举个例子说明如何做到这一点吗?好的,谢谢,它奏效了!为了可读性而重写。