ozi*_*jnr 0 c# image bitmap visual-studio
我想得到任何图像,将其转换为位图,将其大小调整为(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;
}
Run Code Online (Sandbox Code Playgroud)
然后这是我的函数,以获取每个像素的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();
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是,在循环256次之后,RGB值变为0并且如果像素则不会再次变化.也就是说,它为图像提供正确的RGB值256次,然后一切都变为0.
任何颜色的任何图像都会发生这种情况.
请问我的代码有什么问题?
根据https://msdn.microsoft.com/en-us/library/dbsak4dc(v=vs.110).aspx你应该去:
gr.DrawImage(image1,0,0,image2.Width,image2.Height);
Run Code Online (Sandbox Code Playgroud)
不
gr.DrawImage(image1,0,0,image2.Height,image2.Width);
Run Code Online (Sandbox Code Playgroud)