c#,从位图图像中获取像素信息,但未提供所需的结果

时间:2015-07-12 10:33:42

标签: c# image visual-studio bitmap

我想获取任何图像,将其转换为位图,然后将其大小调整为(1024,16) 获取每个像素的RGB值。

这是我调整大小的功能

public Bitmap Resize(bitmap image1)
{
    Bitmap image2 = new Bitmap(16, 1024);
    Graphics gr = Graphics.FromImage(image2);
    gr.DrawImage(image1,0,0,image2.Height,image2.Width);
    return image2;
}

然后这是我的函数来获取每个像素的RGB值并将其写入文本文件

for (int y = 0; y < image2.Height; y++)
{
    for (int x = 0; x < image2.Width; x++)
    {         
        Color pixelcolor = image2.GetPixel(x,y);
        byte weR = pixelcolor.R;
        byte weG = pixelcolor.G;
        byte weB = pixelcolor.B;

        sR.WriteLine(weR.ToString());
        sR.WriteLine(weG.ToString());
        sR.WriteLine(weB.ToString());
        sR.WriteLine();
    }
}

但问题是,在循环256次之后,RGB值变为0,并且如果像素,则不会再次改变其余部分。 也就是说,它为图像提供正确的RGB值256次,然后一切都变为0。

对于任何颜色的任何图像都会发生这种情况。

请问我的代码有什么问题?

1 个答案:

答案 0 :(得分:7)

根据https://msdn.microsoft.com/en-us/library/dbsak4dc(v=vs.110).aspx,你应该选择:

gr.DrawImage(image1,0,0,image2.Width,image2.Height);

不是

gr.DrawImage(image1,0,0,image2.Height,image2.Width);