我想获取任何图像,将其转换为位图,然后将其大小调整为(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。
对于任何颜色的任何图像都会发生这种情况。
请问我的代码有什么问题?
答案 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);